У меня есть проект Django с моделью «Адрес». Это используется в нескольких местах - моделью «Профиль пользователя», моделью «Больница», моделью «Институция» и т. Д.
Я использую общие отношения Django, чтобы каждый из этих объектов мог создать внешний ключ для Address.
Однако, это, кажется, вызывает некоторые странности у администратора Django (или, возможно, я не совсем правильно понимаю, как это должно использоваться). В Django Admin, если я пытаюсь создать адрес, я вижу поля для «Тип контента» и «Идентификатор объекта». Модель не будет проверена / сохранена, если они не заполнены. Не уверен, что положить в них.
Дело в том, что я хотел иметь возможность создавать автономные объекты Address. Затем, когда я создаю профиль пользователя или больницу, я могу связать их с объектами Address, включая возможность нескольких ссылок на один и тот же объект Address.
Как мне использовать администратора Django с общими отношениями?
Кроме того, я также собираюсь использовать django-reversion для контроля версий моделей, но не уверен, что это вызовет какие-либо проблемы с общими отношениями и администратором?
Cheers,
Victor
Редактировать: я должен просто добавить, вот мой предыдущий вопрос, который я опубликовал. Адреса и строки:
Django - Проектирование отношений модели - Интерфейс администратора и Inline
Основываясь на ответах, приведенных там, вот почему модель Address - это модель с внешним ключом. А поскольку обычное поле FK может указывать только на один тип объекта, поэтому мы используем общие отношения.
Каждый пользователь / отделение / больница и т. Д. Может (и в большинстве случаев будет) иметь несколько адресов.
Один и тот же адрес может использоваться несколькими объектами, но это реже, и дублирование здесь хорошо, я думаю, верно?
Так что это будет один ко многим от пользователя / отделения / больницы до адресов.
В этом первоначальном вопросе они также предложили использовать абстрактные классы и разные модели адресов для каждого объекта, который нуждался в адресе. Я до сих пор не уверен, что это лучший подход или есть способ заставить GenericRelations работать с тем, что я пытаюсь сделать здесь.