制作Django的选择相关对象
的名单我有一个模型是这样的:制作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()
和它的作品。 现在我很困惑。为什么用户获得issue_set? 如果我创造了另一种模式,让用户,比方说,最喜欢的问题,如:
class IssueFavorite(models.Model):
issue = models.ForeignKey(Issue)
user = models.ForeignKey(User)
什么会issue_set
然后呢?
--------------- ----------- UPDATE2
咄,我找到了答案。 issue_set指的是由用户创建的问题(因为属性:Issue.createdByUser
) 这不是问题列表我想要的。
确定这是一个领带...... – 2013-03-01 20:34:31
感谢你们:-) – 2013-03-01 20:36:14
我想我应该得到的奖金,包括源;) – 2013-03-01 20:37:17
只是一个简单的filter
会工作。选择查询允许反向关系。所以:
Issue.objects.filter(issuewatch__user = 17)
我要翻转硬币决定谁得到了绿旗... :-) – 2013-03-01 20:34:53
我会给予好评这样一来弥补我得到对号:) – 2013-03-01 20:36:40
你已经设置了一个IssueWatch模型只是为了收集这些信息,我不知道有什么方法可以得到问题的列表,而无需去除这些,除非你有其他的表格将用户与单个问题联系起来。 – GordonsBeard 2013-03-01 20:14:18
删除密思维 – Cole 2013-03-01 20:18:16
我删除此评论和编辑工作的问题... – 2013-03-01 20:22:37