우리는 여러 가지 관계와 여러 모델을 가지고 있습니다. 객체의 모든 관련 객체를 얻는 일반적인 방법을 얻으려고합니다. 내 모델 Pessoa
에서 ._meta.get_fields()
를 인쇄 할 경우Django는 'through'관계 테이블을 사용하여 모델로부터 모든 관련 객체를 가져옵니다.
, 난이 관계 필드 (I는 생략 '정상적인'사람) 수 :
<ManyToManyRel: cadastroimoveis.pessoa>
<ManyToOneRel: cadastroimoveis.pessoa_pessoa>
<ManyToOneRel: cadastroimoveis.pessoa_pessoa>
<ManyToOneRel: cadastroimoveis.pessoa_itr>
<ManyToManyRel: cadastroimoveis.doc>
<ManyToOneRel: cadastroimoveis.doc_pessoa>
cadastroimoveis.Pessoa.relacoes
cadastroimoveis.Pessoa.itrs
이 특정 모델에만있다 M2M 관계를, 그리고 모든 그 중 'Here'과 같이 '통과'모델이 포함되어 있습니다.
볼 수 있듯이 모델과 중간 단계 테이블을 통해 하나씩 반복됩니다 (역시 추측할만한 모델 임). 그리고 재귀 관계의 경우 두 번 반복됩니다.
제 질문은 이러한 반복을 피할 수있는 방법이 있습니까?
두 테이블을 스팸하더라도 최종적으로 동일한 관계에 '반복되는 필드'를 알 수있는 방법은 무엇입니까? through 테이블에 필드가 있으면 다른 방식으로 필드를 표시하려고합니다.
그리고 Model _meta API 설명서에 따라, 모든 관련 개체를 얻기 위해 이것을 사용합니다 :
[
f for f in MyModel._meta.get_fields()
if (f.one_to_many or f.one_to_one)
and f.auto_created and not f.concrete
]
그러나 및 테이블이 auto_created 간주되지 않습니다 '을 통해이'콘크리트입니다.
예 :
<ManyToManyRel: cadastroimoveis.ccir>
<ManyToOneRel: cadastroimoveis.ccir_pessoa>
이 두 필드 '점'같은 관계 하나가 중간 테이블이고 다른 모델이며,이 두 가지가 있다는 것을 알고하는 (자동) 방법이 상관 되니? 그들이 공유하는 어떤 속성도 찾을 수 없었습니다. 쓰루 테이블 필드가있을 때, 나는 모델 자체에 M2M 분야의 대신에 편집해야하기 때문에
그 이유는
Models.py : http://pastebin.com/szDfhHQ3은 내가
를 할 수있는 최선 청소
여기에 모델을 추가 할 수 있습니까? – AKS
어떤 Django 버전을 사용하고 있습니까? – Risadinha
@AKS 지연에 대한 미안, 내 모델을 추가, 곧 답변을 테스트 할 것입니다 – Mojimi