如何比较Django中的两个查询集并过滤不完全匹配的查询集?

2024-06-09 22:15:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三个模型,冰箱,食谱和配料,我想得到所有食谱的查询集,并将它们的配料与冰箱对象中的食物内容进行比较。我想过滤掉所有的食谱,其中没有匹配的成分,我的食物内容和返回查询集只匹配

冰箱和食物都在一个应用程序中,食谱和配料在另一个应用程序中

我对Django还很陌生,我没能找到一个方法。我只使用搜索输入过滤出菜谱,但那只是一个单词

class Fridge(models.Model):
    name = models.CharField(max_length=20)
    belongs_to = models.ForeignKey(User, related_name="my_fridge", on_delete=models.CASCADE)
    food_contents = models.ManyToManyField(Food, related_name="in_fridges")
    slug = models.SlugField(allow_unicode=True, unique=True)

class Food(models.Model):
    name = models.CharField(max_length=20, unique=True)
    quantity = models.PositiveIntegerField()
    description = models.TextField(max_length=255, blank=True)
    date_added = models.DateTimeField(default=timezone.now)
    expiration_date = models.DateTimeField()
    is_expired = models.BooleanField(default=False)
    slug = models.SlugField(allow_unicode=True, unique=True)

class Recipe(models.Model):
    name = models.CharField(max_length=255, unique=True)
    rating = models.CharField(max_length=255)
    preparation_time = models.CharField(max_length=255)
    servings = models.CharField(max_length=255)
    instructions = models.CharField(max_length=1000)
    slug = models.SlugField()

class Ingredient(models.Model):
    name = models.CharField(max_length=255)
    recipe = models.ForeignKey(Recipe, related_name="ingredients", on_delete=models.CASCADE)

Tags: nametruemodelmodelslengthmaxclass食物