2016-10-05 6 views
0

개체 데이터를 필터링하는 동안 django에서 OR 조건의 필터를 사용하고 싶습니다.django의 필터 또는 조건

클래스의 개체가 있고 기본으로 장고에 OR 상태로 데이터를 필터링하려는 3 또는 4 개의 필드가 있습니다.

예를 들면.

Obj = Books.objects.filter(title=title or price=price or description=description or author=author) 

나는 이것이 필터를 수행하는 올바른 방법이 아니라고 생각합니다. 내 장고 필터에

답변

2
from django.db.models import Q 

Obj = Books.objects.filter(Q(title=title) | Q(price=price) | Q(description=description) | Q(author=author)) 

문서를 OR 조건을 사용하기에 적합한 방법은 무엇

: http://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects 출처 : 이것은 내가 모든 filed.If를 전달하면 내가 통과하고있다 https://stackoverflow.com/a/739922/4808939

+0

하나 또는 두 개의를 나에게 follwing error를 준다. 'None을 쿼리 값으로 사용할 수 없다' – vikrant

+0

위의 샘플 코드에서 title 만 통과하면 에러가 난다 None을 쿼리 값으로 사용할 수 없다. – vikrant

+0

@vikrant 빈 쿼리 값을 허용 하시겠습니까? 그렇다면 Q 객체에 전달하기 전에 위생을해야합니다. 이렇게 :'title = title 또는 ""'. 'None'이라면 값을 빈 문자열로 바꿉니다. 공백 값에 신경 쓰지 않는다면 조건부 OR 쿼리를 작성해야합니다. – wholevinski