我目前有一些模型可以与用户直接相关,也可以不与用户直接相关。 User
Region
和Location
。
User
通过ForeignKey Location
与manager
相关,Region
通过ForeignKey Location
与region
相关。
我的问题是,如果我要返回属于某个用户的所有区域,那么显示User
和Region
之间关系的正确查询集是什么。
class Region(models.Model):
name = models.CharField(max_length=255)
...
class Location(models.Model):
region = models.ForeignKey(Region, blank=True, null=True)
manager = models.ForeignKey(User, blank=True, null=True)
...
如果我能提供帮助,我想尽量避免在User
和Region
之间建立直接关系。
答案 0 :(得分:4)
假设user
变量是User
个实例,
你可以这样查找:
regions = Region.objects.filter(location__user=user)
基本上,对于查询集中的反向外键关系,在这种情况下,您可以使用小写的modelname进行字段查找 - location
。
如果此类关系不存在,regions.count()
将为0
此功能的文档为here
实现这一目标的另一种方法是,
regions = user.location_set.values('region') #or values_list - or however you want this