2013-03-01 67 views
0

的名单我有一个模型是这样的:制作Django的选择相关对象

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)对象?

--------------- UPDATE -----------

我试着读user.issue_set.all()和它的作品。 现在我很困惑。为什么用户获得iss​​ue_set? 如果我创造了另一种模式,让用户,比方说,最喜欢的问题,如:

class IssueFavorite(models.Model): 
    issue = models.ForeignKey(Issue) 
    user = models.ForeignKey(User) 

什么会issue_set然后呢?

--------------- ----------- UPDATE2

咄,我找到了答案。 issue_set指的是由用户创建的问题(因为属性:Issue.createdByUser) 这不是问题列表我想要的。

+0

你已经设置了一个IssueWatch模型只是为了收集这些信息,我不知道有什么方法可以得到问题的列表,而无需去除这些,除非你有其他的表格将用户与单个问题联系起来。 – GordonsBeard 2013-03-01 20:14:18

+0

删除密思维 – Cole 2013-03-01 20:18:16

+0

我删除此评论和编辑工作的问题... – 2013-03-01 20:22:37

回答

2

所以,如果我理解这个问题,你想选择一个特定用户正在观看的所有问题?这将与完成以下事项:

Issue.objects.filter(issuewatch__user=17) 

Source

+0

确定这是一个领带...... – 2013-03-01 20:34:31

+0

感谢你们:-) – 2013-03-01 20:36:14

+0

我想我应该得到的奖金,包括源;) – 2013-03-01 20:37:17

2

只是一个简单的filter会工作。选择查询允许反向关系。所以:

Issue.objects.filter(issuewatch__user = 17) 
+0

我要翻转硬币决定谁得到了绿旗... :-) – 2013-03-01 20:34:53

+2

我会给予好评这样一来弥补我得到对号:) – 2013-03-01 20:36:40