在Django中,我可以在多個模型上重新使用現有的Q對象,而無需使用兩次相同的過濾器?我可以使用Django ORM中的Q對象查找相關字段嗎?
我在想沿下方的僞Django的代碼行的東西,但沒有找到文檔中任何相關信息:
class Author(Model):
name = TextField()
company_name = TextField()
class Book(Model):
author = ForeignKey(Author)
# Create a Q object for the Author model
q_author = Q(company_name="Books & co.")
# Use it to retrieve Book objects
qs = Book.objects.filter(author__matches=q_author)
如果這是不可能的,我可以擴展現有的Q對象在相關領域工作?僞例如:
# q_book == Q(author__company_name="Books & co.")
q_book = q_author.extend("author")
# Use it to retrieve Book objects
qs = Book.objects.filter(q_book)
我發現接近使用子查詢,這是一個有點笨拙的唯一的事:
qs = Book.objects.filter(author__in=Author.objects.filter(q_author))
喜歡它只是需要'author__company_name =「書籍和Co」我不明白你的'Q'對象在這裏,你的第一個查詢看起來使用' – Sayse
對不起,我想我應該有使它更清晰。我真正的Q對象非常大(遠遠超過我的例子),我真的很想在相關模型上重用它,而不必重新定義它兩次。 –