[英]Django: Custom field mapping for ModelSerializer
我托管一個API,為此,我使用的是Django Rest Framework 。 我有一個模型,我正在通過API獲取一些數據,以通過模型和模型序列化器存儲在數據庫中。
我的問題是MySQL表中的列名與我在托管的API上獲得的數據不同。 例如:
通過API獲得的數據:
{
"a": "b",
"c": "d",
"e": "f",
}
我的模型如下:
class Table(models.Model):
x = models.CharField(max_length=25,primary_key=True)
y = models.CharField(max_length=25)
z = models.CharField(max_length=25)
序列化器:
class TableSerializer(serializers.ModelSerializer):
class Meta:
model = Table
fields = ( 'x', 'y', 'z')
我如何映射a -> x
, b -> y
, c -> z
?
在TableSerializer類中,可以手動創建映射:
class TableSerializer(serializers.ModelSerializer):
a = models.CharField(source='x', max_length=25, primary_key=True)
b = models.CharField(source='y', max_length=25)
c = models.CharField(source='z', max_length=25)
class Meta:
model = Table
fields = ( 'a', 'b', 'c')
當您返回Table實例時, x
, y
和z
屬性將被序列化為a
, b
和c
。 同樣,當您通過API獲取一些數據時,這些字段將以其他方式映射。
您將在DRF文檔中獲得有關source
更多信息。
ilse2005的方法有效:您可以在序列化程序中覆蓋create方法,並自己進行映射,但可以在序列化程序字段中添加source
參數,這將使您輕松創建,更新和返回Table
實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.