让django选择相关对象的列表
我有一个这样的模型:让django选择相关对象的列表,django,orm,django-models,django-queryset,Django,Orm,Django Models,Django Queryset,我有一个这样的模型: 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(nul
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)
完整代码如下:
这适用于类似于问题跟踪器的系统。存在问题
,用户可以观看问题(IssueWatch
)以接收电子邮件更新
我想做一个查询,返回一个用户正在关注的问题列表。比如:
IssueWatch.objects.select('issue').filter(user=17)
当然,没有像上面我想使用的那种“选择”方法
有没有办法让Django返回一个Issue(而不是IssueWatch)对象的惰性集合
---------------更新-----------
我试着读了user.issue\u set.all()
,结果很好。
现在我很困惑。用户为什么会得到问题集?
如果我创建了另一个模型,让用户,比如说,喜欢的问题,比如:
class IssueFavorite(models.Model):
issue = models.ForeignKey(Issue)
user = models.ForeignKey(User)
那么,issue\u set
意味着什么呢
---------------更新2-----------
嗯,我找到答案了。
issue_set指的是用户创建的问题(因为属性:issue.createdByUser
)
这不是我想要的问题列表。只需一个简单的
过滤器即可。选择查询允许反向关系。因此:
Issue.objects.filter(issuewatch__user = 17)
只需一个简单的过滤器
就可以了。选择查询允许反向关系。因此:
Issue.objects.filter(issuewatch__user = 17)
那么,如果我理解了这个问题,您想选择某个特定用户正在关注的所有问题吗?这将通过以下方式实现:
Issue.objects.filter(issuewatch__user=17)
那么,如果我理解了这个问题,您想选择某个特定用户正在关注的所有问题吗?这将通过以下方式实现:
Issue.objects.filter(issuewatch__user=17)
您已经建立了一个IssueWatch模型,只是为了收集这些信息,我不知道有什么方法可以让您不必查看这些问题就可以获得问题列表,除非你有其他表格将用户与个别问题联系起来。删除稠密Thinking我正在删除此评论并编辑问题…你建立了一个IssueWatch模型只是为了收集这些信息,我不知道你有什么方法可以获得问题列表,而不必查看这些问题,除非你有其他表格将用户与个别问题联系起来。删除密集思考我正在删除此评论并编辑问题…我要掷硬币看看谁得到绿色标志…:-)我会投这张票来弥补我的对勾:)我要掷硬币看谁得到绿旗…:-)我将把这张票投上去,以弥补我的复选标记:)我想我应该因为包括来源而获得奖金;)我认为我应该因为包括来源而获得奖金;)