在Django Rest Framework中序列化多对多中间表

问题描述 投票:2回答:1

我想学习如何通过整个qazxsw poi获取多对多的中间表序列化数据,而不仅仅是id。

model

返回:

#this is my model class
class ProductMaterial(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    material = models.ForeignKey(Material, on_delete=models.CASCADE)
    material_rate = models.FloatField(blank=True, null=True)
    material_price = models.FloatField(blank=True, null=True)



#serializer
class ProductMaterialSerializer(serializers.ModelSerializer):
       class Meta:
           model = ProductMaterial
           fields = '__all__'

Problems:

  1. 第一个问题是它因为多对多表而重复数据
  2. 我也希望看到我的 { "id": 1, "material_rate": 0.3, "material_price": 6.7, "product": 186, "material": 7 }, { "id": 2, "material_rate": 0.7, "material_price": 1.7, "product": 186, "material": 8 }, product模型字段。

My target:

material

Solution 2:

我已经实现了这个解决方案 - > { "id": 1, "product": { "name" : "abcd", "date" : "01.01.2018" }, "material": [ { "id" : 7, "material_rate" : 0.3, "material_price" : 6.7, }, { "id" : 8, "material_rate" : 0.7, "material_price" : 1.7, }, ] }, 并帮助了我。

django serialization django-rest-framework many-to-many
1个回答
2
投票

来自doc,

depth选项应设置为一个整数值,该值指示在恢复为平面表示之前应该遍历的关系深度。

因此,在Meta类中使用https://stackoverflow.com/a/45834689/5491260

depth=1
© www.soinside.com 2019 - 2024. All rights reserved.