Django REST框架:CreateOnlyDefault的目的

时间:2017-05-11 13:39:49

标签: python django django-rest-framework

根据Django REST框架docs,将default=CreateOnlyDefault(<arg>)传递给序列化程序字段

  

可用于仅在创建操作期间设置默认参数。在更新期间,该字段被省略。

     

它需要一个参数,这是在创建操作期间应该使用的默认值或可调用的。

这与声明read_only=True, default=<arg>有何不同,<arg>是您传递给CreateOnlyDefault的单个参数?

2 个答案:

答案 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;值。