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
请求,它发送了一个包含 name
和 created_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']
我有一个模型,它有一个字段用于显示它创建的时间,名为 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
的模型对象列表,这是完美的。但是当我 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']