【发布时间】:2016-04-28 06:38:29
【问题描述】:
我有几个模型有一个 ForeignKey 返回一个模型,该模型有一个 ForeignKey 返回到 Django 中的 auth User。
models.py
class UserDetails(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
related_name='userdetail_related')
details = models.CharField(max_length=100)
email = models.EmailField(unique=True)
class UserInformation(models.Model):
user = models.ForeignKey(
UserDetails,
related_name='userinfo_related')
info = models.CharField(max_length=100, default='this')
编辑
- 根据 Django 文档,我的相关名称的实际代码是:related_name='%(app_label)s_%(class)s_related'。为了便于解释,我将“userdetail_related”放在这里。
- 每个用户只有一个 UserDetail,但每个 UserDetail 有多个 UserInformation。
- 如果有未注册用户并且我们已经捕获了他们的电子邮件,则该电子邮件可以具有与其关联的 UserDetail 和 UserInformation,用于购物车客人结帐系统。
在我的视图中,我想从 self.request.user 访问 UserInformation 模型。
我可以通过以下方式在我的视图中访问 UserDetails:
details = self.request.user.userdetail_related.filter(
user=self.request.user).first()
但我似乎无法通过以下方式访问 UserInformation:
info = self.request.user.userdetail_related.filter(
user=self.request.user).first().userinfo_related.filter(
info='this').first()
我可以让它工作的唯一方法是:
details = self.request.user.userdetail_related.filter(
user=self.request.user).first()
info = details.userinfo_related.filter(
info='this').first()
但这肯定会两次访问数据库,这是我不想要的。
有没有人有更好的方法使用会话用户“通过”UserDetails 从 UserInformation 获取信息?
【问题讨论】:
-
对于任何给定的
User,是否应该只有一个UserDetail和UserInformation,还是可以有多个? -
作为侧节点,您的
filter(user=self.request.user)毫无意义,您已经确定每个用户详细信息都针对特定用户 -
@solarissmoke,见上面的编辑
标签: django django-models