2024-05-20 00:39:00 发布
网友
DRF序列化程序字段中有四个选项:required、allow_empty、allow_null和allow_blank。为了允许空的M2M(多对多)字段,只有allow_empty作为True是安全的还是其他选项也需要协调?另外,反过来又需要什么?你知道吗
required
allow_empty
allow_null
allow_blank
True
djangorestframework==3.8.2
Django rest框架文档说:
allow_blank - If set to True then the empty string should be considered a valid value. If set to False then the empty string is considered invalid and will raise a validation error. Defaults to False.
False
allow_null做的完全一样。但是它的用法不鼓励使用allow_blank。同时设置allow_blank=True和allow_null=True是有效的,但这样做意味着字符串表示将允许两种不同类型的空值,这可能导致数据不一致和细微的应用程序错误。你知道吗
allow_blank=True
allow_null=True
allow_blank应优先用于文本选择,而allow_null应优先用于数字或其他非文本选择。你知道吗
allow_empty属性已从django-rest-framework 3.2.x
allow_empty与ListSerializer或many=True关系一起使用。你知道吗
ListSerializer
many=True
资料来源:django-rest-framework docs
说到ManyToMany以外的字段,比如CHarfield或choice字段,使用allow_blank=True隐含地表示这个字段不是必需的。但是按照优先顺序,如果allow_blank=True后跟required=True,则该字段是必需的。你知道吗
ManyToMany
required=True
而allow_empty与ListSerializer一起显式使用,以允许序列化程序接受空列表。默认情况下,这是True。其中也隐含着:不需要。因此在M2M关系字段中只添加allow_empty=True是安全的。你知道吗
M2M
allow_empty=True
Django rest框架文档说:
allow_null
做的完全一样。但是它的用法不鼓励使用allow_blank
。同时设置allow_blank=True
和allow_null=True
是有效的,但这样做意味着字符串表示将允许两种不同类型的空值,这可能导致数据不一致和细微的应用程序错误。你知道吗allow_blank
应优先用于文本选择,而allow_null
应优先用于数字或其他非文本选择。你知道吗allow_empty
属性已从django-rest-framework 3.2.xallow_empty
与ListSerializer
或many=True
关系一起使用。你知道吗资料来源:django-rest-framework docs
说到
ManyToMany
以外的字段,比如CHarfield或choice字段,使用allow_blank=True
隐含地表示这个字段不是必需的。但是按照优先顺序,如果allow_blank=True
后跟required=True
,则该字段是必需的。你知道吗而
allow_empty
与ListSerializer一起显式使用,以允许序列化程序接受空列表。默认情况下,这是True
。其中也隐含着:不需要。因此在M2M
关系字段中只添加allow_empty=True
是安全的。你知道吗相关问题 更多 >
编程相关推荐