2017-10-18 20 views
0

__containsフィールドのルックアップの「逆」を使用することがどういうことかと思います。例えばのでDjango QuerySet APIの逆フィールドの参照

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

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

そして、私は、たとえば、文字列に収まるようにlast_nameフィールドを持っている者を返します次のクエリを行うことができ、このPersonモデルと与えられた:

あなたが使用することができます
>>> Person.objects.filter(last_name__contains='John Doe, Jane Roe, ...') 
<QuerySet: [Person: Donald Doe]> 

答えて

0

0123これは彼らのいずれかで「ジョン・ドウ」、「ジェーン卵」などを持っているPersonオブジェクトを探している、あなたはよく
+0

operator.and_operator.or_を変更することができます

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

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', '...']))) 

はより同じです'last_name'フィールドです。だから、これは残念ながら逆転されません。 – White

+0

私が最終的に望むのは、Person.objects.filter(last_name__invertedcontains = "John Doe、Jane Roe") '(明示的に単一の文字列ですが、そうでない場合は' last_name = "Doe"ここで重要です) – White

+0

@White srry私は質問を誤解させました –

関連する問題