gpt4 book ai didi

python - Django:ModelSerializer 的自定义字段映射

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:09 26 4
gpt4 key购买 nike

我正在托管一个 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 实例时,xyz 属性将被序列化为 a , bc。同样,当您通过 API 获取一些数据时,字段将以相反的方式映射。

您将在 DRF docs 中获得有关 source 的更多信息

ilse2005 的方法有效:您可以重写序列化程序中的创建方法并自行完成映射,但在序列化程序字段中添加 source 参数,这将允许您创建、更新和返回 Table 实例很容易。

关于python - Django:ModelSerializer 的自定义字段映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36625780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com