私はこのようなモデルを持っています:
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 に Issue (IssueWatch ではなく) オブジェクトの遅延コレクションを返させる方法はありますか?
- - - - - - - - アップデート - - - - - -
私は読ん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
のため)。それは私が望む課題リストではありません。