Django QuerySet API обратный поиск полей
Я задаюсь вопросом, возможно ли как-то использовать "обратное" __contains
поиск полей.
https://docs.djangoproject.com/en/1.11/ref/models/querysets/
Так, например:
class Person(models.Model):
...
last_name = models.CharField()
И с этим Person
модель, которую я мог бы сделать, например, следующий запрос, который будет возвращать людей, которые имеют last_name
поле, которое поместится в строку
>>> Person.objects.filter(last_name__contains='John Doe, Jane Roe, ...')
<QuerySet: [Person: Donald Doe]>
1 ответ
Ты можешь использовать:
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_