假设我有两个串行器,UserSerializer
和EmployeeSerializer
。员工扩展用户的位置。我想覆盖EmployeeSerializer在UserSerializer中当前声明的字段。
根据我的理解,您可以通过extra_kwargs实现此目的,但是对于我来说似乎不起作用,并且当我尝试将POST
数据发送到服务器时仍然出现必填字段错误。
class UserSerializer(serializers.ModelSerializer):
username = serializers.CharField(required=True, max_length=20, allow_blank=False, allow_null=False)
class Meta:
model = User
fields = "__all__"
class EmployeeSerializer(UserSerializer):
class Meta:
model = User
fields = "__all__"
extra_kwargs = {
'username': {'required': False}
}
答案 0 :(得分:0)
您已经从EmployeeSerializer
扩展了UserSerializer
,并在UserSerializer
中明确声明username
字段为必填True
。因此,您无法在extra_kwargs字典中将其设置为required: False
,实际上,它不能像Django rest框架文档所说的那样工作,
请记住,如果已在序列化程序类上明确声明了该字段,则extra_kwargs选项将被忽略。
检查this link以获取详尽的理解。