DjangoのCreateViewでユーザーから入力されたデータを加工して別のテーブルに格納する方法。
例としてユーザーから受け取ったURLからhttpに完全一致する文字列を削除してIDフィールドに格納してみる。
from django.views.generic.edit import CreateView from .models import Post class CreateView(CreateView): model = Post fields = ['text', 'url', 'category'] template_name = 'bbs/create.html' def form_valid(self, form): # フォームの値を取得 form.instance.author = self.request.user form.instance.url = form.cleaned_data['url'].replace('http://', '').replace('https://', '') # データを加工してurlフィールドに格納 return super(CreateView, self).form_valid(form)