[英]Chaining Filters together
鑒於以下內容:
instances = Catalog.objects.filter(
Q(imdb_url=imdb_url)
|Q(isan=isan)
|Q(amg_video_id=amg_video_id)
)
我將如何以下列格式執行相同操作,將每個鏈接在一起:
instances = Catalog.objects.all()
if imdb_url:
instances = instances.filter(imdb_url = imdb_url) # OR
if isan:
instances = instances.filter(isan = isan) # OR
if amg:
instances = instances.filter(amg = amg) # OR
以上給出了相當於:
instances = Catalog.objects.filter(imdb_url=imdb_url).filter(isan=isan).filter(amg=amg)
如何在第一個查詢中執行Q
的等效?
查詢集的union運算符是|
instances = Catalog.objects.none()
if imdb_url:
instances |= instances.filter(imdb_url=imdb_url)
if isan:
instances |= instances.filter(isan=isan)
if amg:
instances |= instances.filter(amg=amg)
您可以使用|=
創建一個空Q
對象並與其他人進行OR:
q = Q()
if imdb_url:
q |= Q(imdb_url=imdb_url)
if isan:
q |= Q(isan=isan)
if amg:
q |= Q(amg=amg)
instances = Catalog.objects.filter(q)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.