Django ForeignKey字段要求必填,尽管设置了blank=True和null=True。

9 浏览
0 Comments

Django ForeignKey字段要求必填,尽管设置了blank=True和null=True。

我正在使用Django REST Framework,并且我有一个具有相关联的MyOtherModel的MyNodel,它们之间是多对一的关系:\nmodels.ForeignKey(MyModel, related_name=\"my_other_models\", blank=True, null=True)\n尽管有blank=True, null=True,但是当我尝试发布一个没有my_other_models字段的MyModel JSON时,会出现“该字段是必需的”的错误。

0
0 Comments

在Django中,当我们在定义模型的外键字段时,通常会遇到一个问题:即使我们在模型字段中使用了`blank=True`和`null=True`,仍然会要求该字段是必填项。

问题的原因是在序列化器中没有将字段设置为`required=False`。

解决方法是在序列化器中将字段设置为`required=False`,如下所示:

field = MyModelSerializer(required=False)

然而,如果我们在序列化器中使用`class Meta`来自动生成字段,应该怎么办呢?

可以通过覆盖自动生成的字段来解决这个问题,即将其替换为新的字段,如下所示:

class MyModelSerializer(serializers.ModelSerializer):
    my_field = MyRelatedModelSerializer(required=False)
    class Meta:
        model = MyModel
        fields = '__all__'

通过这种方式,我们可以在自动生成字段的基础上,将指定的外键字段设置为非必填项。这样就解决了Django中外键字段必填的问题。

0