当前位置: 首页 > 知识库问答 >
问题:

Django REST框架序列化器字段必需=false

江正德
2023-03-14

从文件中:

read_only将其设置为True,以确保在序列化表示时使用该字段,而在反序列化期间更新实例时不使用该字段。

默认为假

required通常情况下,如果反序列化期间未提供字段,则会引发错误。如果反序列化过程中不需要此字段,则设置为false。

默认为True。

因此,我有一个模型,其中有一个字段不可为null,但我希望在pre_save方法中填充它,因此我在serializer中将该字段设置为required=False,但似乎不起作用。我保存记录时仍然出错。

class FavoriteListSerializer(serializers.ModelSerializer):
    owner = serializers.IntegerField(required=False)
    class Meta:
        model = models.FavoriteList

更新:我添加serializer\u class=serializer。FavoriteListSerializer到视图集,现在不是获取此字段是必需的,我认为它已通过验证,但我获取的此字段不能为空 我已经检查了pre_save方法没有被执行,有什么想法吗?


共有3个答案

楮星鹏
2023-03-14

如果有人在这里遇到类似的问题,请注意以下属性以及所需的属性:

允许空白:

如果设置为True,则空字符串应视为有效值。

允许为空:

通常情况下,如果将No传递到序列化程序字段,将引发错误。

必修的:

通常,如果在反序列化过程中未提供字段,将引发错误。

我一直在琢磨为什么我会在required=False中出现验证错误,因为我错过了allow\u null属性。

舒飞捷
2023-03-14

延迟进入此线程。这个问题在django rest框架2.3中得到了修复。13.这是公共关系的链接。

在您的案例中,您可以这样使用它:

    class Meta:
        model = models.FavoriteList
        optional_fields = ['owner', ]
夏侯兴学
2023-03-14

是的,我也遇到过这个问题。您还需要更新验证排除项。

class FavoriteListSerializer(serializers.ModelSerializer):
    owner = serializers.IntegerField(required=False)
    class Meta:
        model = models.FavoriteList

    def get_validation_exclusions(self):
        exclusions = super(FavoriteListSerializer, self).get_validation_exclusions()
        return exclusions + ['owner']
 类似资料:
  • 问题内容: 如何将多对多字段序列化为列表,然后通过rest框架返回它们?在下面的示例中,我尝试返回该帖子以及与其关联的标签列表。 models.py serializers.py views.py 问题答案: 你将需要一个,其有。之后被创建,修改与一个关系:

  • 问题内容: 从文档中: read_only将此设置为True以确保序列化表示形式时使用该字段,而在反序列化期间更新实例时不使用该字段。 默认为False 必需通常,如果反序列化过程中未提供字段,则会引发错误。如果反序列化过程中不需要此字段,则设置为false。 默认为True。 因此,我有一个模型,该模型的字段不可为空,但我希望在pre_save方法中填充该字段,因此我已将该字段设置为序列化器,但

  • 每当我发布到django rest framework(DRF)endpoint时,我都会不断收到响应。但是,考虑到下面的curl示例,我显然指定了一个值。 无论Content-Type(应用程序/json、应用程序/x-wow-form-urlencoded、多部分/form-data)如何,都会发生这种情况。它唯一有效的时间是当我使用DRF网络界面上的“超文本标记语言表单”(相对于“原始数据”

  • 我有一个引用泛型关系的模型,我想以详细的方式序列化它。 我希望ToSeriize视图集的列表方法的JSON看起来像: 有没有办法让ToSeriize对象的视图集的序列化器基于content_type/object_id产生“条件字段”来实现这种效果?

  • 假设我有这样的json,我想将其反序列化为一个名为SubscriberProfile的对象。 当我使用以下代码时,它可以正常工作, 但如果json中缺少字段2,我希望objectmapper抛出和异常(可能缺少字段1和字段2)。 所以这样的json应该抛出一个异常 我曾尝试使用注释,但仅在序列化它时有效。 你知道我该怎么解决这个问题吗? 提前感谢

  • 问题内容: 我是Django REST框架的初学者,需要你的建议。我正在开发Web服务。该服务必须提供与其他服务的REST接口。我需要实现的REST接口无法直接与我的模型一起使用(我的意思是获取,放置,发布,删除操作)。相反,它为其他服务提供了一些计算结果。根据请求,我的服务会进行一些计算,只是将结果返回(不将结果存储在自己的数据库中)。 以下是我对如何实现REST接口的理解。纠正我,如果我错了。