【发布时间】:2020-06-14 17:04:44
【问题描述】:
我在一个键上有一个嵌套关系,该键的名称与数据库中键的名称不同。 我可以两者都做,只是如果它们结合起来就不行了。
我需要 api 名称为 countryOfOrigin,来源为 country_of_origin。
但是我唯一能去工作的就是
[
{
"articleIdOwn": "1234abc",
"articleNameOwn": "1234abc",
"countryOfOrigin": "DE"
}
]
序列化器如下所示:
class ProductSerializer(serializers.ModelSerializer):
articleIdOwn = serializers.CharField(source='article_id_own')
articleNameOwn = serializers.CharField(source='article_name_own')
countryOfOrigin = serializers.PrimaryKeyRelatedField(source='country_of_origin', read_only=True)
class Meta:
model = User_Product
fields = ['articleIdOwn', 'articleNameOwn','countryOfOrigin']
或者这个:
[
{
"articleIdOwn": "1234abc",
"articleNameOwn": "1234abc",
"country_of_origin": {
"isoCode": "DE",
"country": "Deutschland"
}
}
]
序列化器如下所示:
class HS_CountriesSerializer(serializers.ModelSerializer):
isoCode = serializers.CharField(source='iso_code', read_only=True)
country = serializers.CharField(read_only=True)
class Meta:
model = HS_Countries
fields = ['isoCode', 'country']
class ProductSerializer(serializers.ModelSerializer):
articleIdOwn = serializers.CharField(source='article_id_own')
articleNameOwn = serializers.CharField(source='article_name_own')
class Meta:
model = User_Product
fields = ['articleIdOwn', 'articleNameOwn', 'country_of_origin']
def to_representation(self, instance):
self.fields['country_of_origin'] = HS_CountriesSerializer(read_only=True)
return super().to_representation(instance)
但是我希望它看起来像这样:
[
{
"articleIdOwn": "1234abc",
"articleNameOwn": "1234abc",
"countryOfOrigin": {
"isoCode": "DE",
"country": "Deutschland"
}
}
]
产品和国家的模型
class User_Product(models.Model):
key = models.CharField(max_length=10)
code = models.ForeignKey('HS_Code', on_delete=models.CASCADE, null=True)
article_id_own = models.TextField()
article_name_own = models.TextField()
country_of_origin = models.ForeignKey(
'HS_Countries', on_delete=models.CASCADE, null=False)
class HS_Countries(models.Model):
iso_code = models.CharField(primary_key=True, max_length=2)
country = models.CharField(max_length=255)
【问题讨论】:
-
显示产品和国家/地区的模型。
标签: django serialization django-rest-framework