我有以下查询集,
site_list = SiverifyVerificationSite.objects.filter(pattern_id=int(p_id), if_target=bundle.obj.pattern.if_target).exclude(ptrf__istartswith='ptrf-mt23run1-')
如果我给出一个排除过滤器,它会起作用,而如果我在排除中包含第二个过滤器,它会抛出(语法错误:重复关键字参数)。理想情况下,我想要的是,
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-')
有没有运营商可以做到这一点。谢谢。
最佳答案
您可以将排除项链接起来:
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)
关于python - 语法错误 : keyword argument repeated,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42849026/