12

次の単純なモデルを想定します。

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

class Entry(models.Model):
    blog = models.ForeignKey(Blog)
    headline = models.CharField(max_length=255)
    body_text = models.TextField()
    author = models.ForeignKey(User, related_name='author_set')

特定のブログ (つまり pk=1) に参加しているすべての著者を取得するにはどうすればよいですか? 私はこのようなことを試みましたが、うまくいきませんでした。

User.objects.author_set.filter(blog=Blog.objects.get(pk=1))

よろしくお願いします!

4

1 に答える 1

12
User.objects.filter(author_set__blog__pk=1)

私はあなたの関連名に注意を払っていなかったので、上記の (修正された) コードは適切な関連名を使用するようになりました。しかし、これは本当に悪い関連名です。関連する名前は、反対側にあるものを説明する必要がありEntryます。だから本当にそうあるべきですrelated_name='entry_set'。ただし、とにかくそれがデフォルトであるため、related_name必要に応じて削除できます。私は通常、関連するクラスの単純な複数形バージョンを使用します。この場合はrelated_name='entries'. または、「blog_entries」などを使用してより具体的にすることもできます。

于 2012-04-11T18:12:50.470 に答える