代码之家  ›  专栏  ›  技术社区  ›  Alouani Younes

获取模型中M2M字段的所有可能值

  •  1
  • Alouani Younes  · 技术社区  · 6 年前

    class Country(models.Model):
        name = models.CharField(max_length=200)
    
    class City(models.Model):
        name = models.CharField(max_length=200)
        country = models.ForeignKey(Country,on_delete=models.CASCADE)
    
    class Restaurant(models.Model):
        city = models.ManyToManyField(City)
    

    在我的数据库中,有120个城市和25个国家。 但创建的餐厅仅位于20个城市。

    我需要一个查询来检索我的餐馆所在的所有城市。另一个查询是检索我的餐馆所在的所有国家。

    对于第一个查询,我使用了@Daniel Roseman提出的想法:

    City.objects.exclude(restaurant=None)
    

    对于第二个查询,我一直得到空的queryset。我必须对用户进行筛选:

    Country.objects.exclude(city__restaurant__isnull=False).distinct()
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Daniel Roseman    6 年前

    你可以只关注这些关系。

    City.objects.exclude(restaurant=None)
    

    Country.objects.exclude(city__restaurant=None)