0

我想知道是否有可能使用__contains字段查找的“逆”。

https://docs.djangoproject.com/en/1.11/ref/models/querysets/#contains

例如:

class Person(models.Model):
    ...
    last_name = models.CharField()

使用这个Person模型,我可以执行以下查询,该查询将返回具有last_name适合给定字符串的字段的 Persons:

>>> Person.objects.filter(last_name__contains='John Doe, Jane Roe, ...')
<QuerySet: [Person: Donald Doe]>
4

1 回答 1

0

您可以使用:

import operator    
from functools import reduce
from django.db.models import Q  

Person.objects.exclude(reduce(operator.or_, (Q(last_name__contains=x) for x in ['John Doe', 'Jane Roe', '...'])))

等同于:

Person.objects.exclude(Q(last_name__contains='Jhon') | Q(last_name__contains='Jane'))

你可以operator.or_改变operator.and_

于 2017-10-18T18:32:50.997 回答