【发布时间】:2013-02-16 10:34:15
【问题描述】:
我有一个这样的模型:
class Issue(models.Model):
project = models.ForeignKey(Project, null=True, blank=True)
key = models.CharField(max_length=30, null=True, blank=True)
title = models.CharField(max_length=400)
description = models.TextField(null=True, blank=True)
createdByUser = models.ForeignKey(User)
creationDate = models.DateTimeField()
updatedDate = models.DateTimeField(null=True, blank=True)
trackerURL = models.URLField(null=True, blank=True)
is_feedback = models.BooleanField()
is_public_suggestion = models.BooleanField()
class IssueWatch(models.Model):
issue = models.ForeignKey(Issue)
user = models.ForeignKey(User)
reason = models.CharField(max_length=30, null=False, blank=False)
完整代码在这里: https://github.com/freedomsponsors/www.freedomsponsors.org/blob/master/djangoproject/core/models.py
这适用于类似于问题跟踪器的系统。有Issues,用户可以观看问题 (IssueWatch) 以接收电子邮件更新。
我想进行一个查询,该查询将返回用户正在观看的问题列表。比如:
IssueWatch.objects.select('issue').filter(user=17)
当然,没有像上面我想使用的那种“选择”方法。
有什么方法可以让 Django 返回一个惰性问题集合(而不是 IssueWatch)对象?
--------------- 更新 -----------
我尝试阅读 user.issue_set.all() 并且它有效。
现在我很困惑。为什么用户会得到一个 issue_set?
如果我创建了另一个模型,让用户,比如说,最喜欢的问题,比如:
class IssueFavorite(models.Model):
issue = models.ForeignKey(Issue)
user = models.ForeignKey(User)
那么issue_set 是什么意思?
--------------- UPDATE2 -----------
呃,我找到了答案。
issue_set 指的是用户创建的问题(因为属性:Issue.createdByUser)
这不是我想要的问题列表。
【问题讨论】:
-
您已经设置了一个 IssueWatch 模型,只是为了收集这些信息,我不知道有什么方法可以让您获得问题列表而无需通过这些,除非您有其他表将用户与个别问题联系起来。
-
删除密集思维
-
我正在删除此评论并编辑问题...
标签: django orm django-models django-queryset