JOINを私は2つのモデル、ジャンゴ:LEFTのより良い実装が
class Post(models.Model):
id = models.IntegerField(primary_key=True)
post_title = models.CharField()
post_type = models.CharField()
class Comments(models.Model):
id = models.IntegerField(primary_key=True)
post = models.ForeignKey(Post, related_name="post_comments")
comment = models.CharField()
user_id = models.IntegerField()
を持っている私は、特定のユーザーのコメントと一緒にpost_type「ブログ」と「すべて」の記事を取得したいです。生のクエリでそれをやっている場合、クエリは上記のクエリがどのように私は、この使用後のオブジェクトを実装することができますuser_idを20でのコメントと一緒に「ブログ」としてpost_typeを持つすべての投稿を返します
SELECT p.id as post_id, p.post_title, pc.comment
FROM Post p
LEFT JOIN Comments pc ON (p.id=pc.post AND pc.user_id=20)
WHERE p.post_type='blog'
、このようになりますdjangoのフィルタ?
私は腹を立てる方法を試みたが、それは仕事をしなかった。
queryset = Post.objects.filter(post_type='blog', post_comments__user_id=20).all()
私はたくさんのグーグルで探っていましたが、私はこのための良い解決策を見つけることができませんでした。
を行うことができます私はDjangoのOを使用してデータを取得したい、クエリを印刷したくありませんフィルタの方法をbjects。 –
私は、あなたがデバッグの目的のためにクエリを印刷することができます理解して、そのフィルタを使用して生成されたsql djangoを参照してください。 –
内部結合クエリを出力します。 –