gpt4 book ai didi

即使 required=False 也需要 Django REST Framework 序列化器字段

转载 作者:行者123 更新时间:2023-12-04 18:56:30 25 4
gpt4 key购买 nike

我有一个这样的模型

class FalseUserAnswer(BaseModel):
question = models.ForeignKey(TrueOrFalseQuestion, on_delete=models.CASCADE)
user_question = models.ForeignKey(TrueOrFalseUserQuestion, on_delete=models.CASCADE, null=True)
answer = models.ForeignKey(FalseAnswer, on_delete=models.CASCADE)

问题是我的前端的一个旧版本不发送 user_question而较新的。所以,我想接受一个 的对象没有字段(它不会为空,或 None 或什么都没有,只是不会在请求中)。

我试图在我的序列化程序中做这样的事情
class FalseUserAnswerSerializer(serializers.ModelSerializer):
# Allows null for version < 1.18 of the app. Might be removed in the future.
user_question = serializers.PrimaryKeyRelatedField(queryset=TrueOrFalseUserQuestion.objects.all(), required=False, allow_null=True)

class Meta:
model = FalseUserAnswer
fields = ['id', 'creator', 'question', 'user_question', 'answer', 'type']

但我仍然得到
"error": {
"user_question": [
"This field is required."
]
}

Django REST 框架版本为 3.8.2

任何帮助表示赞赏,感谢您的时间。

最佳答案

我阅读了源代码,显然要获得我想要的行为,我必须将默认值设置为 None。没有意义,因为我相信一旦我说 required=False (并且数据库字段应该用 NULL 填充),这将是后备值。

所以以前我的代码是

user_question = serializers.PrimaryKeyRelatedField(queryset=TrueOrFalseUserQuestion.objects.all(), required=False, allow_null=True)

工作版本是
user_question = serializers.PrimaryKeyRelatedField(queryset=TrueOrFalseUserQuestion.objects.all(), required=False, allow_null=True, default=None) 

关于即使 required=False 也需要 Django REST Framework 序列化器字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51425977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com