根据Django REST框架docs,将default=CreateOnlyDefault(<arg>)
传递给序列化程序字段
可用于仅在创建操作期间设置默认参数。在更新期间,该字段被省略。
它需要一个参数,这是在创建操作期间应该使用的默认值或可调用的。
这与声明read_only=True, default=<arg>
有何不同,<arg>
是您传递给CreateOnlyDefault
的单个参数?
答案 0 :(得分:2)
使用CreateOnlyDefault
时,该值仅用于创建而不用于更新。
例如:
class MySerializer:
created = serializers.DateTimeField(
read_only=True,
default=serializers.CreateOnlyDefault(timezone.now)
)
modified = serializers.DateTimeField(
read_only=True,
default=timezone.now
)
使用该序列化程序,modified
字段将在每次更新时更新,而created
字段将在创建时保持不变。
答案 1 :(得分:1)
这意味着它可以由API客户端提供或不提供,因此当验证者检查它是否提供任何内容时,它会创建一个&#39;默认&#39;值。