我有三种型号:
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()
答案 0 :(得分:3)
您可以按照关系进行操作。
City.objects.exclude(restaurant=None)
和
Country.objects.exclude(city__restaurant=None)