2015-10-22 2 views
0

В трясогузки, скажем, у меня есть страница, как это:В Wagtail, как я могу добавить форму в нижней части другой формы модели в WagtailAdmin, для отношения OneToOneField?

class MyPage(Page): 
    field_1 = RichTextField() 
    field_2 = models.DateField() 

    content_panels = Page.content_panels + [ 
     FieldPanel('field_1'), 
     FieldPanel('field_2'), 
    ] 

И у меня есть еще одна модель, которая имеет отношение один к одному с первой моделью:

class PageSettings(models.Model): 
    page = models.OneToOneField(MyPage) 
    extra_setting_1 = models.BooleanField() 
    extra_setting_2 = models.CharField(max_length=50) 

Как я могу добавить форму для модели PageSettings в нижней части формы администратора Wagtail для модели MyPage?

Бонусные баллы за способ сделать это с общими отношениями.

+0

Как вы уже упоминали в https://github.com/torchbox/wagtail/issues/1831, похоже, что это не поддерживается в настоящее время. Я думаю, что их намерение для такого рода вещей (по крайней мере на данный момент) заключается в использовании наследования и добавлении этих атрибутов как часть вашего класса MyPage. – CryingCyclops

+0

Да, я думаю, ты прав. Чем больше я знаком с базой кода, тем больше кажется, что он не настроен на такой подход. Я отправлю ответ здесь, если я когда-нибудь это выясню. – seddonym

ответ

1
class MyPage(Page): 
    field_1 = RichTextField() 
    field_2 = models.DateField() 

    content_panels = Page.content_panels + [ 
     FieldPanel('field_1'), 
     FieldPanel('field_2'), 
     InlinePanel('settings', label='Settings', min_num=1, max_num=1), 
    ]  

class PageSettings(models.Model): 
    page = ParentKey(MyPage, related_name='settings') 
    extra_setting_1 = models.BooleanField() 
    extra_setting_2 = models.CharField(max_length=50) 
+0

Мне нравится этот ответ - я не «принял» его, потому что он точно не соответствует требованиям (я хочу сделать это с OneToOneField), а в форме, в которой он возникает, есть некоторые нежелательные кнопки, которые не имеют смысла с отношениями один к одному, но это хороший способ обхода. – seddonym

+0

Wagtail не любит O2O, но вы можете взломать ParentalOneToOneField. Проблема с графическим интерфейсом может быть решена с помощью включенного javascript редактора, который потребовал изменения стиля или пользовательский InlinePanel с настраиваемым шаблоном. – spiderlama

Смежные вопросы