DjangoのCreateViewでユーザーから入力されたデータを加工して別のテーブルに格納する方法

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)
このエントリーをはてなブックマークに追加

コメントを残す

頂いたコメントは一読した後表示させて頂いております。
反映まで数日かかる場合もございますがご了承下さい。