#django #django-models #django-admin #foreign-key-relationship
#django #django-модели #django-администратор #foreign-key-relationship
Вопрос:
Я пытаюсь выяснить, как заставить систему администрирования django отображать мои модели в виде встроенных строк, когда нет прямого FK от дочерней модели к родительской.
У меня есть три модели (псевдокод):
class CampaignMain(models.model):
...
class CampaignMonitor(models.model):
campaign = models.OneToOneField(CampaignMain, pk=True)
class CampaignTransaction(models.model):
campaign = models.ForeignKey(CampaignMain)
Таким образом, как CampaignMonitor, так и CampaignTransaction FK CampaignMain, именно так мне нужно, чтобы они были структурированы.
Вот что я не могу понять: мне нужна страница администратора, показывающая CampaignMonitor с CampaignTransaction в виде строк. Но когда я пытаюсь это сделать, я получаю «ошибка нет fk в CampaignTransaction, указывающая на CampaignMonitor»
Есть ли способ «принудительно» установить отношения только для страницы администратора? Или есть общий параметр FK? Я видел кое-что в contrib / contenttypes, но, похоже, это не то, что мне нужно. Или мне придется таким образом создавать пользовательский раздел администратора для двух моделей?
Как всегда, совет приветствуется.
imanc
Ответ №1:
Вместо OneToOneField вы можете использовать наследование нескольких таблиц, которое реализовано с использованием отношения «один к одному» shinp:
class CampaignMonitor(CampaignMain):
...
Теперь измените администратора CampaignMonitor так, как это необходимо для ваших нужд.