Форсировать отношения на моделях django для моделей, которые официально не связаны с FK - PullRequest
0 голосов
/ 11 апреля 2011

Я пытаюсь выяснить, как заставить административную систему 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 в качестве встроенных.Но когда я пытаюсь это сделать, я получаю сообщение об ошибке «no no fk» в CampaignTransaction, указывающем на CampaignMonitor »

Есть ли способ« форсировать »отношения только для страницы администратора?Или есть общий вариант FK?Я видел что-то в contrib / contenttypes, но, похоже, это не то, что мне нужно.Или я собираюсь построить собственный раздел администратора для двух моделей таким образом?

Как всегда, совет очень ценится.

imanc

1 Ответ

0 голосов
/ 21 июня 2011

Вместо OneToOneField вы можете использовать Многостоловое наследование , которое реализовано с использованием отношения один-к-одному:

class CampaignMonitor(CampaignMain): 
    ...

Теперь измените администратора CampaignMonitor так, как вам нужно.

...