将ForeignKey关联到auth.User模型

时间:2011-04-24 16:10:38

标签: django django-models models

我正在尝试将Account模型与标准django auth.User模型相关联。

我看到它发生的方式是在ForeignKeyUser,指向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直接模型。

有更有效的方法吗?或者我错过了一些明显的东西?

2 个答案:

答案 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)