让我们想象有一个serializer
这样的:
class EventSerializer(serializers.ModelSerializer):
class Meta:
model = Event
fields = (
'title',
'description'
)
哪里可以description
为空。我想要的是,请求数据完全覆盖了PUT请求上的序列化器数据(显然是在更新现有模型实例时)。如果我做:
event_serializer = EventSerializer(event, data=request_data)
它确实会覆盖所有内容,但是description
如果请求中不存在它,则它不会无效。有没有一种方法可以不用手动进行操作:
data['description'] = data.get('description', None)
一种选择是description
在序列化程序上定义字段,并使用default
类似:
class EventSerializer(serializers.ModelSerializer):
# Use proper field type here instead of CharField
description = serializers.CharField(default=None)
class Meta:
model = Event
fields = (
'title',
'description'
)
也请参阅文档:
默认
如果设置,则给出默认值,如果没有提供输入值,该默认值将用于该字段。如果未设置,则默认行为是根本不填充该属性。
可以设置为函数或其他可调用函数,在这种情况下,每次使用该值时都会对其求值。
请注意,设置默认值意味着该字段不是必需的。同时包含default和required关键字参数是无效的,并且会引发错误。
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다