从Wagtail Page修订版中排除字段

时间:2017-07-22 17:19:33

标签: django wagtail

我有一个扩展基页模型的Wagtail模型:

models.py

class EmployeePage(Page):
    eid = models.PositiveIntegerField(unique=True)        
    active = models.BooleanField(blank=True)
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    ...

    content_panels = [
        FieldPanel('eid'),            
        FieldPanel('first_name'),
        FieldPanel('last_name'),
    ]

我只是通过每日API导入脚本直接将active字段更新为实时模型,因此我希望它完全从CMS中排除。

import_script.py

employee = EmployeePage.objects.get(eid=imported_row.eid)
employee.active = imported_row.active
employee.save()

我可以从CMS编辑视图中排除active字段,但不包含在上面content_panels中,但这似乎只是一个整容,因为值仍然总是包含在页面中修订,它覆盖了我的导入值。如何从页面修订中排除某个字段?

1 个答案:

答案 0 :(得分:1)

这是一个有点hacky的解决方案,但似乎有效。不是从页面修订中排除字段,而是将代码添加到更新所有页面修订的导入脚本中。

<强> import_script.py

employee = EmployeePage.objects.get(eid=imported_row.eid)
employee.status = imported_row.status
employee.save()

# Updates all page revisions
revisions = PageRevision.objects.filter(page=employee)
for r in revisions:
    r.active = imported_row.active
    r.save()