Python Django Rest API ManyToMany在API中没有给出任何[]

Python Django Rest API ManyToMany在API中没有给出任何[],python,python-3.x,django,django-models,django-rest-framework,Python,Python 3.x,Django,Django Models,Django Rest Framework,目前,我试图从API中获取配方。我有一个包含两个表的数据库,一个表包含配方和它们的id,但没有成分,另一个表包含成分和配方id。现在我找不到API“结合”这些的方法。可能是因为我在配方id中添加了成分模型中的相关名称,但我必须这样做,否则会出现以下错误: ERRORS: recipes.Ingredients.recipeid: (fields.E303) Reverse query name for 'Ingredients.recipeid' clashes with field name

目前,我试图从API中获取配方。我有一个包含两个表的数据库,一个表包含配方和它们的id,但没有成分,另一个表包含成分和配方id。现在我找不到API“结合”这些的方法。可能是因为我在配方id中添加了成分模型中的相关名称,但我必须这样做,否则会出现以下错误:

ERRORS:
recipes.Ingredients.recipeid: (fields.E303) Reverse query name for 'Ingredients.recipeid' clashes with field name 'Recipe.ingredients'.
        HINT: Rename field 'Recipe.ingredients', or add/change a related_name argument to the definition for field 'Ingredients.recipeid'.
模型 当没有问题时,它必须在序列化程序或视图中

序列化程序 看法 但我想要的是,例如id为0的配方和所有配方id为0的配料。 我真的希望你能帮助我。非常感谢你

如果希望Django不创建向后关系,请将
相关的\u name
设置为
'+'
或以
'+'
结束

因此,将
成分的
相关名称
更改为

class Ingredients(models.Model):
    # rest of the fields
    recipeid = models.ForeignKey(
        'Recipe',
        models.DO_NOTHING,
        db_column='recipeid',
        blank=True,
        null=True,
        related_name="ingredients_ref" # Changed the related name 
    )

请注意,在这里,我添加了两个名为
components\u forward
components\u backward
的字段,因为
Recipe
components
之间存在两种类型的关系,我不确定您在寻找哪种类型的关系。

您是否遇到了任何错误或其他问题?有几件事:您可以遵循暗示而不是做你认为正确的事。如果您不理解提示,请查看Django文档。其次,您的配方模型被标记为托管,而您的配料模型未被托管。这是故意的吗?我假设它们都是未管理的,这就引出了一个问题:为什么要使用Django?最后,要回答您关于JSON可序列化性的问题,请检查Django Rest框架。@Bobort我多次阅读了文档,但文档中只提供了一个多对多的示例,其中包含他们正在填充的数据库。我的数据库已经满了,我正在寻找一种方法来“组合”数据。目前我不知道问题在哪里,我只想知道它是在模型中还是在API本身中。正因为如此,我尝试更改不同的值,但我不能100%确定它们是否正确。谢谢你,它是有效的。但是,我是否正确地理解,我需要从配方中反向获得配料?我该如何使用成分转发?根据您的模型结构,两者在您的情况下都是不同的。我想知道你为什么需要配料。首先,我不知道你的意思。我需要配方id,因为它是recipeOkay的唯一参考,那么现在有什么问题?我只想了解向前和向后的成分是什么。
class IngredientsSerializer(serializers.ModelSerializer):
   # ingredients = serializers.CharField(source='ingredients__ingredients')

    class Meta:
        model = Ingredients
        fields = ['ingredient','recipeid']

class FullRecipeSerializer(serializers.ModelSerializer):

    ingredients = IngredientsSerializer(many=True)

    class Meta:
        model = Recipe
        fields = ['title','ingredients']
class FullRecipesView(generics.ListCreateAPIView):
    serializer_class = FullRecipeSerializer
    permission_classes = [
        permissions.AllowAny
    ]
    queryset = Recipe.objects.all()
class Ingredients(models.Model):
    # rest of the fields
    recipeid = models.ForeignKey(
        'Recipe',
        models.DO_NOTHING,
        db_column='recipeid',
        blank=True,
        null=True,
        related_name="ingredients_ref" # Changed the related name 
    )
class FullRecipeSerializer(serializers.ModelSerializer):
    ingredients_forward = IngredientsSerializer(many=True, source="ingredients")
    ingredients_backward = IngredientsSerializer(many=True, source="ingredients_ref")

    class Meta:
        model = Recipe
        fields = ['title', 'ingredients_forward', 'ingredients_backward']