やりたいこと
以下に定義するModelについて、Not NullなフィールドはフォームやRESTでも必須じゃなくしたい。
class ExamTr(models.Model): class Meta: app_label = 'exam' id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) volume = models.IntegerField(null=False) scope = models.CharField(max_length=128, null=False) year = models.DateField(null=False) questions = ListCharField( base_field=models.CharField(max_length=128, null=True), max_length=128, ) answers = ListCharField( base_field=models.CharField(max_length=128, null=True), max_length=128, )
方法
forms.pyおよびserializers.pyで対象フィールドをrequired=Falseとしてインスタンス化する。
下記はserializers.py(Rest Framework)の場合、
from rest_framework import serializers from exam.models import ExamTr class ExamSerializer(serializers.ModelSerializer): questions = serializers.CharField(required=False) answers = serializers.CharField(required=False) class Meta: model = ExamTr fields = ( 'id', 'volume', 'scope', 'year', 'questions', 'answers', )
forms.pyの場合はdjango.formsの各フィールドクラスで同じようにすればよい。