В нашем приложении у нас есть несколько отношений и несколько моделей, я пытаюсь получить общий способ получить все связанные объекты объекта, даже обратные.Django получить все связанные объекты из модели со «взаимозависимыми» таблицами
Если я печатаю ._meta.get_fields()
из моей модели Pessoa
, я получаю эти отношения поля (я опустил «нормальный» из них):
<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.
Как вы можете видеть, он повторяет их, один для модели и один для промежуточной таблицы «через» (также модель, я думаю). А в случае рекурсивных отношений это повторяется дважды.
Вопрос в том, есть ли способ получить эти повторения?
Способ узнать, какие повторяющиеся поля «указывают» на те же отношения в конце (даже если они спамают две таблицы)? Потому что, если в сквозной таблице есть поля, я хочу отобразить их по-другому.
И согласно документации 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