python - 从rest_framework.serializer.Field中的django.db.models.Field继承help_text

标签 python django django-rest-framework

让我们考虑一下

models.py

class Foo(models.Model):
    ...
    bar = models.IntegerField(help_text='This is bar')
    baz = models.IntegerField(help_text='This is baz')

序列化器.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)
  • baz:serializers.IntegerField(label='这是 baz')。该标签自动从help_text 属性继承。

出于文档目的,即使我重新定义了该字段,我也想继承 help_text 。在这种情况下,我必须这样做,因为我需要条的最小/最大值。有没有办法做到这一点?

最佳答案

要继承序列化程序中模型字段中定义的选项并添加一些额外选项,您需要使用 extra_kwargs选项。

您需要在序列化器的 Meta 类中定义一个字典 extra_kwargs。这将允许您在字段上指定任意附加关键字参数。然后,您将不需要在序列化器上显式声明该字段。

extra_kwargs 字典的键将是您要为其添加一些附加参数的字段名称,其值将是包含这些附加关键字参数的字典。

序列化器.py

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
            }
        }

除了继承模型中指定的默认参数之外,上述方法还将向模型字段添加这些附加参数。

关于python - 从rest_framework.serializer.Field中的django.db.models.Field继承help_text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32610527/

相关文章:

Django Rest Framework 的 IsAuthenticated() 方法对 AnonymousUser 失败

python - Django select_related 不返回外表数据

python - SPOJ Alphcode 迭代动态规划

python - 如何在命令提示符下运行 Django 开发服务器?

django - 从 Django 查询集中获取第一个对象

python - 如何在 drf_yasg 中将方案从 HTTP 更改为 HTTPS?

python - Django Rest 应用程序未正确使用媒体根来提供图像

Python:解析get/post参数的方法

python - png24 到 png8 转换

Django TemplateDoesNotExist admin/login.html