我有膳食模型和成分,膳食与成分有很多关系。我尝试获得与Ingredientmodels.py匹配的对象
class Meal(models.Model):
    name = models.CharField(max_length=250)
    description = models.TextField(blank=True, null=True)
    recipe = models.TextField()
    is_published = models.BooleanField(default=False)
    user = ForeignKey(User, verbose_name='User', on_delete= models.CASCADE)
    difficulty = ForeignKey('Difficulty', on_delete=models.PROTECT, null=True)
    ingridients = models.ManyToManyField('Ingridient')
    ico = models.CharField(max_length=500, blank=True, null=True)
class CategoryIngridients(models.Model):
    name = models.CharField(max_length=100, db_index=True)
    def __str__(self):
        return self.name
class Ingridient(models.Model):
    name = models.CharField(max_length=100, db_index=True)
    category = ForeignKey('CategoryIngridients', on_delete=models.CASCADE, null=True)
    def __str__(self):
        return self.name
序列化程序.py
class MealSerializer(serializers.ModelSerializer):
    category = serializers.StringRelatedField()
    difficulty = serializers.StringRelatedField()
    #ingridients = serializers.StringRelatedField()
    user = serializers.StringRelatedField()
    class Meta:
        model = Meal
        fields = "__all__"
class IngrigientSerializer(serializers.ModelSerializer):
    category = serializers.StringRelatedField()
    class Meta:
        model = Ingridient
        fields = "__all__"
视图.py
class TestCraft(APIView):
    def post(self, request):
        ingridients_tmp = request.data['ingredients']
        ingrid = Ingridient.objects.filter(id__in=ingridients_tmp)
        print(ingrid)
        queryset = Meal.objects.filter(ingridients__in=ingrid)
        print(queryset)
        serializer = MealSerializer(queryset, many=True)
        return Response(serializer.data)
如果我POST json:
{"ingredients":[1,2]}
此视图返回,但它们正在重复:
[
    {
        "id": 1,
        "difficulty": "Medium",
        "user": "vleo",
        "name": "gfgd",
        "description": "",
        "recipe": "...",
        "is_published": true,
        "ico": "",
        "ingridients": [
            1,
            2,
            3,
            4,
            5,
            6
        ]
    },
    {
        "id": 5,
        "difficulty": "Easy",
        "user": "vleo",
        "name": "залупа",
        "description": "[eqyz",
        "recipe": "n.,sr",
        "is_published": false,
        "ico": "",
        "ingridients": [
            1,
            2
        ]
    },
    {
        "id": 1,
        "difficulty": "Medium",
        "user": "vleo",
        "name": "gfgd",
        "description": "",
        "recipe": "...",
        "is_published": true,
        "ico": "",
        "ingridients": [
            1,
            2,
            3,
            4,
            5,
            6
        ]
    },
    {
        "id": 5,
        "difficulty": "Easy",
        "user": "vleo",
        "name": "sdf",
        "description": "[eqyz",
        "recipe": "n.,sr",
        "is_published": false,
        "ico": "",
        "ingridients": [
            1,
            2
        ]
    }
]
您还可以建议:我如何创建类TestCraft(APIView),以便通过一条路径我可以使用json中的成分,也可以检索膳食(queryset)?