SyntaxError:重复关键字参数

时间:2017-03-17 04:03:51

标签: python django django-queryset

我有以下查询集,

site_list = SiverifyVerificationSite.objects.filter(pattern_id=int(p_id), if_target=bundle.obj.pattern.if_target).exclude(ptrf__istartswith='ptrf-mt23run1-')

如果我给出一个排除过滤器,它会起作用,而如果我在排除过程中包含第二个过滤器,则抛出它(SyntaxError:关键字参数重复)。理想情况下,我想要的是,

site_list = SiverifyVerificationSite.objects.filter(pattern_id=int(p_id), if_target=bundle.obj.pattern.if_target).exclude(ptrf__istartswith='ptrf-mt23run1-', ptrf__istartswith='ptrf-20251-') 

有没有运营商这样做。谢谢。

1 个答案:

答案 0 :(得分:3)

您可以将排除链接起来:

qs = qs.exclude(ptrf__istartswith='ptrf-mt23run1-')
qs = qs.exclude(ptrf__istartswith='ptrf-20251-')

它不会以这种方式引起任何额外的查询 - Django将不会在必要时评估查询集。

另一种方法是使用Q个对象构建过滤器。

from django.db.models import Q
q = Q(ptrf__istartswith='ptrf-mt23run1-') | Q(ptrf__istartswith='ptrf-20251-')
qs = qs.exclude(q)