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

时间:2019-03-09 22:48:05

标签: django many-to-many

我有三种型号:

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)

对于第二个查询,我一直得到空的查询集。我必须使用用户过滤器:

Country.objects.exclude(city__restaurant__isnull=False).distinct()

1 个答案:

答案 0 :(得分:3)

您可以按照关系进行操作。

City.objects.exclude(restaurant=None)

Country.objects.exclude(city__restaurant=None)