Django Rest Framework:在模型视图集中创建一个不需要的字段

Django Rest Framework: make a field not required in modelviewset create

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

这是它的序列化器:

class ModelSerializer(ModelSerializer):
    class Meta:
        model = Model
        fields = ['name', 'created_time']

这是它的视图集:

class ModelApiView(ModelViewSet):
    serializer_class = ModelSerializer

    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())

现在,通过 get 请求,它发送了一个包含 namecreated_time 的模型对象列表,这是完美的。但是当我 post 要创建一个新模型时,只包含它的 name,它会向我发送此错误消息:

{
    "datetime": [
        "This field is required."
    ]
}

您可以通过在 ModelSerializer:

中指定来使该字段不是必需的
class MyModelSerializer(ModelSerializer):
    created_time = serializer.DateTimeField(<b>required=False</b>)

    class Meta:
        model = MyModel
        fields = ['name', 'created_time']