食谱上的Django manytomany关系

时间:2019-05-01 22:44:51

标签: django django-models many-to-many django-orm

所以我有这两个模型,分别是食谱和膳食。例如,我想获得鸡肉和意大利面食配料的鸡肉意大利面餐。我该怎么办?

class Recipe(models.Model):
    mealId = models.ForeignKey('meal.Meal',on_delete=models.CASCADE,related_name='meal')
    ingredientId=models.ManyToManyField('ingredient.Ingredient')
    amountId=models.ManyToManyField('amount.Amount')


class Meal(models.Model):
    mealName=models.CharField(max_length=100,verbose_name="Meal name")
    desc=RichTextField()
    img=models.ImageField(blank=True)
    categoryId=models.ManyToManyField('category.Category')

1 个答案:

答案 0 :(得分:1)

如果您想通过成分模型的名称字段来搜索成分,例如“鸡肉”,“面食”和“鸡肉意大利面食谱”可以包含其他成分,例如:“鸡肉”,“意大利面”,“盐”,“酱”。然后,您可以按照以下方式进行操作:

# put here import your models
names_for_search = [
        "chicken",
        "pasta"
    ]
queryset = Recipe.objects.all()
for name in names_for_search:
    queryset = queryset.filter(ingredientId__name__in=[name])
result_reciple = queryset.first()
if result_reciple is not None:
    result_meal = result_reciple.mealId