首页 > 解决方案 > Django Rest Framework:创建模型视图集中不需要的字段

问题描述

我有一个模型,它有一个显示它创建时间的字段,名为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请求,它会发送一个模型对象列表,其中包含name并且created_time是完美的。但是,当我发布一个要创建的新模型时,它只包含它的name,它会向我发送以下错误消息:

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

标签: pythondjangodatetimedjango-rest-frameworkdjango-serializer

解决方案


您可以通过在以下内容中指定该字段来使该字段不需要ModelSerializer

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

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

推荐阅读