簡體   English   中英

如何使用DRF序列化程序將字段映射到其他名稱的字段?

[英]How do you map fields to a differently named field with DRF serializers?

如果我有一個APIQuery對象,則可以得到以下表示形式:

{
  'key': 'Foo',
  'field_1': 'John',
  'field_2': 'Doe',
}

我正在嘗試將其存儲在模型中,例如

class Person(models.Model):
  key = models.CharField(max_length=255, primary_key=True)
  first = models.CharField(max_length=255)
  last = models.CharField(max_length=255)

如何正確設置序列化程序,並限制APIQuery對象中的鍵可能會更改,例如field_1可能變為field_17 我知道沒有最后的約束我就可以

class PersonSerializer(serializers.ModelSerializer):
  key = serializers.CharField()
  field_1 = serializers.CharField(source='first')
  field_2 = serializers.CharField(source='last')

使用SerializerMethodField並定義函數get_last_name ,該函數將返回姓氏。

class PersonSerializer(serializers.ModelSerializer):
   key = serializers.CharField()
   field_1 = serializers.SerializerMethodField('get_first_name')
   field_2 = serializers.SerializerMethodField('get_last_name')

   class Meta:
       model = "Person"
       fields = ('key','field_1','field_2')

   def get_first_name(self, obj):
       return obj.first       

   def get_last_name(self, obj):
       return obj.last

暫無
暫無

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

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