Dek*_*er1 2 django keyerror wagtail
我正在建立一个需要使用多个子模型实例创建的模型。我希望能够在管理界面中编辑和创建此模型,所以我要使用添加它ModelAdmin。根据文档,我应该能够根据常规Page类型指定字段/面板。但是,当我添加一个时InlinePanel,会KeyError在相关字段名称上得到一个。
models.py
class Application(models.Model):
# other fields....
panels = [MultiFieldPanel([
FieldPanel('applicant'),
FieldPanel('position'),
FieldPanel('cover_letter'),
FieldPanel('qualifications'),
InlinePanel('references'),
FieldPanel('draft'),
])]
class Reference(models.Model):
application = models.ForeignKey(
Application,
related_name='references',
on_delete=models.CASCADE,
blank=False,
)
# other fields....
Run Code Online (Sandbox Code Playgroud)
wagtails_hooks.py
class ApplicationAdmin(ModelAdmin):
model = Application
menu_icon = 'mail'
menu_order = 400
list_display = # other fields....
modeladmin_register(ApplicationAdmin)
Run Code Online (Sandbox Code Playgroud)
错误
要求网址:http : //127.0.0.1 : 8000/admin/involvement/application/create/
Django版本:1.10.5
异常类型:KeyError
异常值:“引用”
异常位置:/[APPFOLDER]/venv/lib/python3.6/site-packages/wagtail/wagtailadmin/edit_handlers.py init,第627行
我无法确定自己做错了什么。有人能指出我正确的方向吗?
Wagtail依靠django-modelcluster库来允许将父模型和子模型以表单的形式作为单个单元进行处理。为此,基础Application模型必须继承modelcluster.models.ClusterableModel(Wagtail Page模型作为标准进行继承),并且子模型必须通过ParentalKey而不是进行链接ForeignKey。
中的子模型InlinePanel通常也是的子类Orderable,因此可以对其进行排序。我不记得这是绝对要求还是仅仅是建议。
from modelcluster.models import ClusterableModel
class Application(ClusterableModel):
# ...
class Reference(Orderable):
application = models.ParentalKey(
Application,
related_name='references',
on_delete=models.CASCADE,
blank=False,
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1065 次 |
| 最近记录: |