簡體   English   中英

從rest_framework.serializer.Field中的django.db.models.Field繼承help_text。

[英]Inherits help_text from django.db.models.Field in rest_framework.serializer.Field

考慮一下

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)
  • bazserializers.IntegerField(label='This is baz') 該標簽會自動從help_text屬性繼承。

出於文檔目的,即使我重新定義該字段,我也想繼承 help_text。 在這種情況下,我必須這樣做,因為我需要bar的最小值/最大值。 有辦法嗎?

要繼承序列化器的模型字段中定義的選項並添加一些其他選項, 您需要使用extra_kwargs選項。

您需要在序列化器的Meta類中定義一個字典extra_kwargs 這將允許您在字段上指定任意其他關鍵字參數。 然后,您將不需要在序列化程序上顯式聲明該字段。

extra_kwargs詞典的關鍵字將是您要為其添加一些附加參數的字段名稱,其值將是包含這些附加關鍵字參數的字典。

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

除了繼承模型中指定的默認參數外,上述方法還將這些附加參數添加到模型字段中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM