鉴于以下情况:
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
的等式? 最佳答案
您可以创建一个空的Q
对象,或者与其他对象一起使用|=
:
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)
关于python - 将过滤器链接在一起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26791269/