Djangoクエリツールを使用して、一連の関連オブジェクトと関係する可能性があるいくつかの基準を満たすオブジェクトのリストを返す方法を探しています。このクエリでDjango:外部キーオブジェクトのプロパティのクエリ
class Book(models.Model):
name = models.CharField(max_length=100)
class Chapter(models.model):
name = models.CharField(max_length=100)
book = models.ForeignKey(Book)
length = models.IntegerField(default=0)
が、私はすべてのコンポーネントChapter
がlength > 100
を有する場合、すべてのBooks
を取得したい:ここで私が何を意味するかです。しかし、これはそれに近づくための最も素朴な方法は明らかである
for book in Book.objects.all():
for chapter in book.chapter_set.all():
{do whatever to record if this chapter is valid/invalid}
:
は、私は私のような何かを行うことができます実現します。ネストされたfor
ループを避ける良い方法があると確信していますが、まず最初にすべてのオブジェクトを反復処理しないようにしたいと思います。
さまざまなDjangoツールを使用して、のオブジェクトのプロパティを使用するクエリを作成する方法はありますか?この方法で動作するドキュメントでは何も見つかりません。すべての例では、クエリを組み込むのではなく、特定のインスタンスの_set
を使用しています。
例えば、私は(これは私が後で戻って自分のコンピュータに到達するまで、おそらく一人で副選択がうまくいく未テストです)、次のSQLは、直接私がここで何をしようとしている達成だと思う:
select * from book b, (select book_id
from chapter
group by book_id
having min(length) = 100) x
where b.book_id = x.book_id;
また、未処理のSQLを回避しようとしていますので、これ(またはそれのいくつかのバージョン)が機能しても、Djangoのクエリ機能の詳細については、filter()
、 F()
,Q()
などの表現。あなたはたとえば以下100に等しいlength
を有する少なくとも一つのChapter
を持っているものを除くすべてのBook
秒を照会しようとすることができ
申し訳ありませんが、完全に質問を読み違えます。新しい回答を投稿します。 – e4c5