在DRF序列化程序字段中,安全地允许M2M字段为空所需的最小选项是什么?

2024-05-20 00:39:00 发布

您现在位置:Python中文网/ 问答频道 /正文

DRF序列化程序字段中有四个选项:requiredallow_emptyallow_nullallow_blank。为了允许空的M2M(多对多)字段,只有allow_empty作为True是安全的还是其他选项也需要协调?另外,反过来又需要什么?你知道吗

djangorestframework==3.8.2


Tags: 程序true序列化选项requireddjangorestframeworknulldrf
1条回答
网友
1楼 · 发布于 2024-05-20 00:39:00

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.

allow_null做的完全一样。但是它的用法不鼓励使用allow_blank。同时设置allow_blank=Trueallow_null=True是有效的,但这样做意味着字符串表示将允许两种不同类型的空值,这可能导致数据不一致和细微的应用程序错误。你知道吗

allow_blank应优先用于文本选择,而allow_null应优先用于数字或其他非文本选择。你知道吗

allow_empty属性已从django-rest-framework 3.2.x

allow_emptyListSerializermany=True关系一起使用。你知道吗

资料来源:django-rest-framework docs

说到ManyToMany以外的字段,比如CHarfield或choice字段,使用allow_blank=True隐含地表示这个字段不是必需的。但是按照优先顺序,如果allow_blank=True后跟required=True,则该字段是必需的。你知道吗

allow_empty与ListSerializer一起显式使用,以允许序列化程序接受空列表。默认情况下,这是True。其中也隐含着:不需要。因此在M2M关系字段中只添加allow_empty=True是安全的。你知道吗

相关问题 更多 >