我正在尋找一種方法來使用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)
在此查詢,我要檢索所有Books
,每一個組件都有Chapter
length > 100
。
我知道我可以做這樣的事情:
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工具來構建使用chapter_set
中的對象屬性的查詢?我無法在以這種方式工作的文檔中找到任何內容 - 每個示例都使用一個特定實例的_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()
等表達式。
對不起完全誤解的問題。將發佈一個新的答案。 – e4c5