让我们考虑
models.py
class Foo(models.Model):
...
bar = models.IntegerField(help_text='This is bar')
baz = models.IntegerField(help_text='This is baz')
serializers.py
class FooSerializer(serializers.ModelSerializer):
bar = serializers.IntegerField(min_value=0, max_value=9)
class Meta:
model = Foo
fields = ('bar', 'baz')
在此示例中,FooSerializer有两个字段:
serializers.IntegerField(min_value=0, max_value=9)
serializers.IntegerField(label='This is baz')
。标签自动从help_text属性继承。出于文档目的,我希望继承 help_text,即使我重新定义了该字段。在这种情况下,我必须,因为我需要最小值/最大值为bar。有办法吗?
答案 0 :(得分:2)
要继承序列化程序中模型字段中定义的选项并添加一些额外选项,您需要使用extra_kwargs
选项。
您需要在序列化程序的extra_kwargs
类中定义字典Meta
。这将允许您在字段上指定任意其他关键字参数。然后,您不需要在序列化程序上明确声明该字段。
extra_kwargs
字典的键将是您要为其添加一些其他参数的字段名称,其值将是包含这些其他关键字参数的字典。
class FooSerializer(serializers.ModelSerializer):
class Meta:
model = Foo
fields = ('bar', 'baz')
extra_kwargs = {
'bar': { # add additional arguments for 'bar' field
'min_value':0, # specify 'min_value' argument
'max_value': 9 # specify 'max_value' argument
}
}
除了继承模型中指定的默认参数外,上述方法还会将其他参数添加到模型字段中。