2016-06-29 3 views

답변

1

짧은 답 : 할 수 없습니다.

긴 답 : 귀하의 질문에 "어떻게 푸 막대의 이름에 액세스 할 수는"주어진 Foo 인스턴스가 언제나 하나 하지 제로가 아닌 두 (Bar 관련 단 하나의하지 마흔두을 의미한다 정확하게 하나). ManyToManyField을 사용하고 있습니다. 이는 Foo 인스턴스가 0, 1 또는 관련 (Bar)의 (양수) 숫자를 가질 수 있음을 의미합니다. 이 경우, Foo.bar가 아닌 하나의 Bar 인스턴스로하는의 검색어에 IOW

f = Foo() 
f.bar.all() 

를 해결하는 것은이 경우 Foo.bar에 실제로

f = Foo() 
Bar.objects.filter(bb=f) # very weird related name FWIW 

에 해당이 더 나은 Foo.bars (복수의) 이름을 지정해야합니다. 당신의 의도는 각 Foo 하나의 단일 Bar을 가지고 많은 관계로 하나를 가지고 있었고, Bar 많은 Foo이있는 경우

, 당신은 대신 ForeignKey합니다.

+0

중개 테이블/모델을 사용하여 문제를 해결할 수있는 방법이 있는지 알고 계십니까? – loar

+0

다 대다 관계는 중개 테이블을 기반으로 구축되었습니다. 이는 실제로 관계형 모델 101입니다. 그리고 그것은 단지 "해결"하지 않을 것입니다. 당신의 설계가 잘못되었습니다 (당신은 일대 다 관계를 원했을 때 많은 것을 선택했습니다) 또는 질문이 이해가되지 않습니다 (다 대다 관계의 의미를 참조하십시오)). –