2013-12-12 2 views
0

: 장고 관련 구문 비교

class Foo(models.Model): 
    bar = models.ForeignKey(Bar) 

class Bar(models.Model): 
    date = models.DateTimeField(auto_add_now=True) 

는 서로 다른?

Foo.bar.filter(date=...) 
Foo.objects.filter(bar__date=...) 

가있는 경우, 어떻게? 그렇지 않다면 왜 둘 다 존재합니까?

+1

첫 번째 것은 django에서 유효한 쿼리가 아니므로 오류가 반환됩니다. 예, difnce가 있습니다. – yuvi

+0

기존 코드에서 가져 왔지만'foo.bar.filter' 관계 횡단에서 비롯된다. 나는 그것을 너무 많이 단순화했다. –

+0

어 ... 질문에 대한 답변이 있습니까? – yuvi

답변

1

@yuvi 언급 된 Foo.bar.filter(date=...)은 유효하지 않습니다.

Foo.bar.get_query_set().filter(date=...) 

Foo.bar.get_query_set()Bar.objects.all()과 동일 bar에 대한 쿼리 세트를 생성합니다 :처럼 어쩌면 첫 번째 쿼리가 될 것입니다. 따라서이 둘은 완전히 다릅니다.

Foo.bar.filter 필드에 대한 설명을 보려면 Foo.bar이 존재하므로 존재하지 않습니다.

+0

잘못된 쿼리에 대해 사과 드리며, 내가 읽고 있던 기존 코드에서이 코드를 복사하려고 시도했으며 잘못 읽었습니다. 내 주요 질문은 내가 Foo.bar ... 및 foo.objects.filter (bar __...) 줄을 따라 것들을 볼 수 있으며 구문에 차이가 있는지 궁금해했다. –