在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对象非常大(远远超过我的例子),我真的很想在相关模型上重用它,而不必重新定义它两次。 –