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

Python 安全允许DRF序列化程序字段中M2M字段为空所需的最小选项是什么?,python,django,django-rest-framework,Python,Django,Django Rest Framework,DRF序列化程序字段中有四个选项:required、allow_empty、allow_null和allow_blank。要允许空的M2M(多对多)字段,将allow_empty设置为True是否安全,或者是否还需要协调其他选项?同样,反过来又需要什么 djangorestframework==3.8.2djangorestframework文档说: allow_blank-如果设置为True,则空字符串应视为有效值。如果设置为False,则空字符串将被视为无效,并将引发验证错误。默认值为Fal

DRF序列化程序字段中有四个选项:
required
allow_empty
allow_null
allow_blank
。要允许空的M2M(多对多)字段,将
allow_empty
设置为
True
是否安全,或者是否还需要协调其他选项?同样,反过来又需要什么


djangorestframework==3.8.2

djangorestframework文档说:

allow_blank
-如果设置为
True
,则空字符串应视为有效值。如果设置为
False
,则空字符串将被视为无效,并将引发验证错误。默认值为
False

allow_null
的作用与此完全相同。但是不鼓励使用
allow\u blank
。可以同时设置
allow_blank=True
allow_null=True
,但这样做意味着字符串表示将允许两种不同类型的空值,这可能导致数据不一致和微妙的应用程序错误

文本选择应首选
allow_blank
,数字或其他非文本选择应首选
allow_null

allow\u empty
属性已从

allow_empty
ListSerializer
many=True
关系一起使用

来源:

说到
manytomy
以外的字段,比如CHarfield或choice字段,使用
allow\u blank=True
隐含地表示该字段不是必需的。但按照优先顺序,如果
allow_blank=True
后面跟着
required=True
,则该字段为必填字段


然而,
allow_empty
与ListSerializer一起显式使用,以允许序列化程序接受空列表。默认情况下,这是
True
。这也暗示了:不需要。因此,在
M2M
关系字段中只添加
allow_empty=True
是安全的。

这完全取决于您的需求。然而,对于保存端,最好是让
allow_blank
我忘记指定版本,现在添加。仅供参考:从DRF 3.2开始,已添加允许为空。你的答案仍然是有价值的:)。谢谢