Wagtail技术问题:如何获取Orderable值自动生成页面标题
解决方案
要在ReihePage的clean方法中获取InlinePanel关联的字段值,直接通过ParentalKey的related_name访问关联条目即可,具体修改如下:
修改ReihePage的clean方法
def clean(self): super().clean() # 获取所有关联的ReihePageOrderable条目 fach_entries = self.Fach.all() title_components = [] for entry in fach_entries: # 跳过未关联FachPage的条目 if not entry.fach: continue # 拼接单个条目标题片段 component = f"{entry.anzahl} × {entry.fach.title}" title_components.append(component) # 生成最终标题,处理无关联条目的情况 if title_components: new_title = " | ".join(title_components) else: new_title = "未关联任何Fach" self.title = new_title self.slug = slugify(new_title)
关键说明
self.Fach.all():由于ReihePageOrderable中ParentalKey的related_name设为"Fach",ReihePage实例可通过该属性直接获取所有关联的ReihePageOrderable对象集合。- 空值判断:必须检查
entry.fach是否非空,因为外键设置了null=True,避免触发AttributeError。 - 标题格式:示例用
|分隔多个关联条目,你可以根据需求替换成逗号、换行或其他分隔符。 - 笔误修正:ReihePageOrderable中的外键指向
"Fachpage"(小写p),但实际类名是FachPage(大写P),建议修改为models.ForeignKey("FachPage", on_delete=models.SET_NULL, null=True),确保数据库关联正确。
内容的提问来源于stack exchange,提问作者harvey
相关产品推荐
相关产品推荐

