我正在尝试将Account
模型与标准django auth.User
模型相关联。
我看到它发生的方式是在ForeignKey
上User
,指向Account
,因此我可以使用account.users
之类的内容。
喜欢这样
class User(User):
account = ForeignKey(Account, related_name='users')
...
但是,众所周知,向User
模型添加信息的推荐方法是通过UserProfile
。
喜欢这样
class UserProfile(models.Model):
account = ForeignKey(Account, related_name='profiles')
user = ForeignKey(User)
...
这意味着,如果我想获得Users
帐户中所有Account
的列表,我需要执行类似的操作,
users = [p.user for p in account.profiles]
虽然这只是一行,但我假设每个p.user
生成一个额外的数据库命中,与User
模型可通过{{1直接模型。
有更有效的方法吗?或者我错过了一些明显的东西?
答案 0 :(得分:2)
您可以使用select_related
。
profiles = account.select_related().profiles
还将包括唯一查询中的所有用户查找。
以下是文档:http://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related
答案 1 :(得分:0)
如果我说得对,你想要特定帐户的所有用户。鉴于此,您应该能够执行以下操作或类似的操作。
users = User.objects.filter(userprofile__account=account)