2017-04-19 1 views
0

해당 속성으로 필터링 할 모델이 있습니다 a. 모델에는 또 다른 속성 b이 있습니다. a이 0이거나 a의 값이 b 인 항목을 필터링하려고합니다 (각 행에 대해 분명히). 다른 열의 값으로 어떻게 필터링합니까? 여기 Django QuerySet : 다른 필드의 값으로 필터링

내가 시도 무엇이며, 누락 된 부분 :

MyModel.objects.filter(Q(a=0) | Q(a=???)) # ??? is to be the value of the `b` column 

내가 장고 1.4을 사용하고 내가 더 이상 지원되는 이전 버전입니다 알고 있지만 불행하게도 업그레이드를 수행하는 최대 아니다 나를.

+0

모델을 변경할 수 있습니까? –

+0

F 표현식은 1.4에서 사용할 수 있으며, 정확히 당신이 찾고있는 것입니다. –

답변

2

나는 당신이 당신의 Q 객체에 F expression를 사용할 수 있다고 생각 지금 업그레이드를 예약하십시오. 그렇지 않으면 다른 기능과 보안 픽스가 누락됩니다.

+0

허, 어떤 이유로 나는'F' 표현이 최근 mor에 도입되었다고 생각했습니다. 고맙습니다. 언급했듯이 업그레이드가 절대로 나올 수 없습니다. – dabadaba

1

두 필드를 비교하기 위해 F 모델을 사용할 수 있습니다. 나는 또한 당신을 제안 할 것이다

MyModel.objects.filter(Q(a=0) | Q(a=F('b'))) 

:

from django.db.models import F 
MyModel.objects.filter(a__exact = F('b')) 

그래서 공동 쿼리에 대해 당신이 뭔가를 사용할 수

MyModel.objects.filter(Q(a=0) | Q(a__exact=F('b'))) 
+0

두 값이 같은지 확인합니까? –

+0

오, 당신은 a가 b 속성과 동등한 가치를 가졌음을 의미합니다. 귀하의 질문에 분명하지 않아서 미안 하구요, 제가 무엇을 할 수 있는지 보도록하겠습니다. – Osiris92

+0

대답하기 전에 질문을주의 깊게 읽으십시오. – Iqbal