鉴于以下情况:

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/

10-09 17:00