0

私はこのようなモデルを持っています:

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のため)。それは私が望む課題リストではありません。

4

2 に答える 2

2

シンプルfilterに動作します。選択クエリでは、逆の関係が許可されます。そう:

Issue.objects.filter(issuewatch__user = 17)
于 2013-03-01T20:31:48.097 に答える
2

では、私が質問を理解している場合、特定のユーザーが監視しているすべての問題を選択しますか? これは、次のようにして行われます。

Issue.objects.filter(issuewatch__user=17)

ソース

于 2013-03-01T20:32:34.347 に答える