【问题标题】:Django Rest Framework: make a field not required in modelviewset createDjango Rest Framework:创建模型视图集中不需要的字段
【发布时间】:2020-09-10 06:18:31
【问题描述】:

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

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

【问题讨论】:

  • 您可以在ModelSerializer顶部添加created_time = serializer.DateTimeField(required=False)

标签: python django datetime django-rest-framework django-serializer


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 2015-01-17
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多