django-rest-framework 如何使模型序列化程序字段成为必需的

新手上路,请多包涵

我有一个正在逐步填写的模型,这意味着我正在制作一个表单向导。

因此,此模型中的大多数字段都是必需的,但有 null=True, blank=True 以避免在提交部分数据时引发非空错误。

我正在使用 Angular.js 和 django-rest-framework,我需要告诉 api 应该需要 x 和 y 字段,如果它们为空,它需要返回验证错误。

原文由 Cristian Rojas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 640
2 个回答

您需要专门覆盖该字段并添加您自己的验证器。您可以在此处阅读更多详细信息 http://www.django-rest-framework.org/api-guide/serializers/#specifying-fields-explicitly 。这是示例代码。

 def required(value):
    if value is None:
        raise serializers.ValidationError('This field is required')

class GameRecord(serializers.ModelSerializer):
    score = IntegerField(validators=[required])

    class Meta:
        model = Game

原文由 Edwin Lunando 发布,翻译遵循 CC BY-SA 3.0 许可协议

根据 这里 的文档,最好的选择是在 Meta 类中使用 extra_kwargs,例如,您有存储电话号码的 UserProfile 模型,并且是必需的

class UserProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserProfile
        fields = ('phone_number',)
        extra_kwargs = {'phone_number': {'required': True}}

为此,请确保您的模型已设置为 blank false null false,如下所示。

 some_field = models.CharField(blank=False, null=False, default='Anonymous')

原文由 Sandeep Patil 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题