python - 如何在 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"),
]
我可以添加管理面板地址、电话、电子邮件和网站。那也行。
但我希望能够Vehicles
在HomePage
.
在get_context
我得到HomePage
as 时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
]
任何想法?
解决方案
推荐阅读
- intellij-idea - 如何通过 JetBrains Toolbox 中的 setting.json 设置代理?
- android - Oreo+ 通知声音问题
- android - 绘制自定义视图的正确方法?
- sql - SQL Server 数据库备份操作耗时较长
- java - 组织者的 .ics 附件格式是什么,在 Google 日历中添加时会显示在哪里
- css - 如何添加不同形状的边框?
- selenium - 同时运行相同的 Selenium/Testng 测试
- ajax - 在 Drupal 中选择照片上传时 AJAX 请求异常终止
- python - Python Sklearn / Scikit & cx_freeze:模块'sklearn.tree._criterion'没有属性'Criterion'
- java - 如何在单个浏览器中运行多个 UI 测试?