我有一个这样的模型:
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 返回一个惰性的问题(而不是问题观察)对象集合?
- - - - - - - - 更新 - - - - - -
我尝试阅读user.issue_set.all()
并且它有效。现在我很困惑。为什么用户会得到一个 issue_set?如果我创建了另一个模型,让用户,比如说,最喜欢的问题,比如:
class IssueFavorite(models.Model):
issue = models.ForeignKey(Issue)
user = models.ForeignKey(User)
那会是什么issue_set
意思呢?
--------------- 更新2 -----------
呵呵,我找到了答案。issue_set 指的是用户创建的问题(因为属性:)Issue.createdByUser
这不是我想要的问题列表。