【发布时间】:2021-08-08 07:56:41
【问题描述】:
我有一个包含 3 个字段的 django 模型:“product”、“price_1”和“price_2”。
我想序列化这个模型,结果是:
{
"product": "some product",
"price": {
"price_1": 15.00,
"price_2": 25.00
}
}
我能够通过为价格创建模型并使用外键将其连接到产品模型来达到此结果。
#Models
class Product(models.Model):
product = models.CharField()
price = models.ForeignKey(Price)
class Price(models.Model):
price_1 = models.FloatField()
price_2 = models.FloatField()
#Serializers
class PriceSerializer(serializers.ModelSerializer):
class Meta:
model = Price
fields = ['price_1', 'price_2']
class ProductSerializer(serializers.ModelSerializer):
price = PriceSerializer()
class Meta:
model = Product
fields = [
"product",
"price",
]
它有效,但它非常无效。有没有办法让我达到相同的结果,但只有一个模型,例如:
class Product(models.Model):
product = models.CharField()
price_1 = models.FloatField()
price_2 = models.FloatField()
如果我可以只有数字而没有“价格”这个词,那就更好了:
{
"product": "some product",
"price": {
1: 15.00,
2: 25.00
}
}
虽然第二个结果更好,但如果我只用一个模型就可以实现第一个,我已经很高兴了。
提前致谢!
编辑:
这是我正在使用的视图:
class ProductReadAPIView(generics.RetrieveAPIView):
lookup_field = 'pk'
serializer_class = ProductSerializer
def get_queryset(self):
return Product.objects.all()
【问题讨论】:
-
可以分享一下ModelViewSet吗?
-
1:和2:不是有效的 JSON:JSON 对象的键始终是字符串,因此"1"、"2"等,但不是1或 @ 987654331@. -
我也添加了视图。如果您需要任何其他信息,请告诉我。
标签: python django django-models django-rest-framework