Django Rest Framework:在 modelviewset 创建中创建不需要的字段

Ham*_*adi 3 python django datetime django-serializer django-rest-framework

我有一个模型,有一个用于显示其创建时间的字段,名为created_time. 我不想created_time在创建模型时被要求,但我希望它位于从模型检索的数据中!

这是它的序列化器:

class MyModelSerializer(ModelSerializer):
    class Meta:
        model = Model
        fields = ['name', 'created_time']
Run Code Online (Sandbox Code Playgroud)

这是它的视图集:

class ModelApiView(ModelViewSet):
    serializer_class = MyModelSerializer

    def get_queryset(self):
        return Model.objects.filter(user=self.request.user.id)

    def perform_create(self, serializer):
        serializer.save(user=self.request.user, created_time=datetime.now())
Run Code Online (Sandbox Code Playgroud)

现在,根据get请求,它发送一个模型对象列表,其中namecreated_time是完美的。但是,当我发布要创建的新模型(仅包含其)时name,它会向我发送以下错误消息:

{
    "datetime": [
        "This field is required."
    ]
}
Run Code Online (Sandbox Code Playgroud)

Wil*_*sem 5

您可以通过在以下位置指定该字段,使该字段不再为必填字段ModelSerializer

class MyModelSerializer(ModelSerializer):
    created_time = serializer.DateTimeField(required=False)

    class Meta:
        model = MyModel
        fields = ['name', 'created_time']
Run Code Online (Sandbox Code Playgroud)