🕺

[Django]ModelFormを動的に生成しdictの内容をバリデートして保存する

2024/03/07に公開

BlogというModelがあるとして、こんな感じに書くと任意のフィールドを更新できる👊

from django.forms.models import modelform_factory


def update(instance: Blog, data: dict) -> None:
    # fields=list(data.keys()) で検証したいフィールドを指定
    BlogForm = modelform_factory(Blog, fields=list(data.keys()))
    blog_form = BlogForm(data=data, instance=instance)
    blog_form.is_valid()
    blog_form.save()
GitHubで編集を提案

Discussion