首页 > 解决方案 > 通过模型返回具有多对多关系的嵌套/相关模型

问题描述

Recipe我在和之间有一个多对多关系Product。如果我请求食谱,我也可以查询相关的产品,但是当我请求产品时,没有相关的模型数据。

我认为这是因为关系是在配方模型上定义的。如何查询与产品相关的食谱(带有through型号信息!)?基本上我想要的是查询一个产品并查看所有需要这个产品的食谱。

模型.py

class Recipe(models.Model):
    ...
    products_input = models.ManyToManyField(Product, through='RecipeInput', related_name='products_input')
    ...


class Product(models.Model):
    ...

class RecipeInput(models.Model):
    recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    amount = models.IntegerField()
    ...

序列化程序.py

class RecipeInputSerializer(serializers.HyperlinkedModelSerializer):
    product_key = serializers.ReadOnlyField(source='product.key')
    product_name = serializers.ReadOnlyField(source='product.name')

    class Meta:
        model = RecipeInput
        fields = ("product_name", 'amount', 'product_key', )

class RecipeSerializer(serializers.ModelSerializer):
    products_in = RecipeInputSerializer(source='recipeinput_set', many=True)

    class Meta:
        model = Recipe
        fields = "__all__"
        depth = 3

class ProductSerializer(serializers.ModelSerializer):
    
    class Meta:
        model = Product
        fields = "__all__"
        depth = 3

标签: djangodjango-modelsdjango-rest-framework

解决方案


推荐阅读