首页 > 解决方案 > 如何在 Django Wagtail 中重用子页面中的父页面字段?

问题描述

我正在尝试重用 Django Wagtail 中的一些字段。

我的主页HomePage面如下:

class HomePage(Page):
    # Footer section #
    footer_address = models.CharField(max_length=50, blank=False, null=False, default='My company address')
    footer_phone = models.CharField(max_length=50, blank=False, null=False, default='My company phone')
    footer_email = models.CharField(max_length=50, blank=False, null=False, default='My company email')
    footer_website = models.CharField(max_length=50, blank=False, null=False, default='My company website')
    # End Footer section #

    def get_context(self, request):
        context = super().get_context(request)
        context['logo'] = self.logo
        context['address'] = self.footer_address
        context['phone'] = self.footer_phone
        context['email'] = self.footer_email
        context['website'] = self.footer_website
        return context

    content_panels = Page.content_panels + [
        FieldRowPanel([FieldPanel('footer_address', classname="col3 footer_address"), FieldPanel('footer_phone', classname="col3 footer_phone"),
                       FieldPanel('footer_email', classname="col3 footer_email"), FieldPanel('footer_website', classname="col3 footer_website")], heading="Footer contact info",
                      classname="full g-py-30 footer"),
    ]

我可以添加管理面板地址、电话、电子邮件和网站。那也行。

但我希望能够VehiclesHomePage.

get_context我得到HomePageas 时HomePage.objects.parent_of(self).live().first(),我可以在子页面的模板中传递这些字段的值,但是如何从子页面在父页面中编辑或添加它们的值?

代码如下:

class Vehicles(Page):
    vehicles_list_title = models.CharField(max_length=100, blank=False, null=False, default=_('Discover vehicles that suit you'), verbose_name=_("Title"))

    def get_context(self, request):
        # Update context to include only published posts, ordered by reverse-chron
        context = super().get_context(request)
        homepage_parent = HomePage.objects.parent_of(self).live().first()
        context['logo'] = homepage_parent.logo
        context['address'] = homepage_parent.footer_address
        context['phone'] = homepage_parent.footer_phone
        context['email'] = homepage_parent.footer_email
        context['website'] = homepage_parent.footer_website
        return context

    content_panels = Page.content_panels + [
        #### What I need to do here to show and to be able to edit fields from parent page

    ]

任何想法?

标签: pythondjangowagtail

解决方案


推荐阅读