adn*_*aya 7 django serialization many-to-many django-rest-framework
我想学习如何整体获取多对多中间表的序列化程序数据model,而不仅仅是通过 id。
#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__'
Run Code Online (Sandbox Code Playgroud)
这将返回:
{
"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
},
Run Code Online (Sandbox Code Playgroud)
product和material模型字段。{
"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,
},
]
},
Run Code Online (Sandbox Code Playgroud)
我已经实施了这个解决方案 -> /sf/answers/3208428261/ 并且它帮助了我。
从文档中,
深度选项应设置为整数值,该值指示在恢复为平面表示之前应遍历的关系深度。
所以,depth=1在 Meta 类中使用
class ProductMaterialSerializer(serializers.ModelSerializer):
class Meta:
model = ProductMaterial
fields = '__all__'
depth = 1Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3284 次 |
| 最近记录: |