Wagtail"没有字段名称"

时间:2018-05-24 18:34:40

标签: python django wagtail

我很不情愿,所以请原谅任何明显的错误。我试图创建一个名为PortfolioItemPage的新页面类型。尝试使用runserver,makemigrations或migrate时,我收到以下错误:

Unhandled exception in thread started by <function check_errors.

<locals>.wrapper at 0x10900f048>
Traceback (most recent call last):
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/django/db/models/options.py", line 566, in get_field
    return self.fields_map[field_name]
KeyError: 'project_title'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 120, in inner_run
    self.check(display_num_errors=True)
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/django/core/management/base.py", line 364, in check
    include_deployment_checks=include_deployment_checks,
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/django/core/management/base.py", line 351, in _run_checks
    return checks.run_checks(**kwargs)
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/django/core/checks/registry.py", line 73, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/wagtail/admin/checks.py", line 62, in get_form_class_check
    edit_handler = cls.get_edit_handler()
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/wagtail/utils/decorators.py", line 53, in __call__
    return self.value
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/django/utils/functional.py", line 36, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/wagtail/utils/decorators.py", line 49, in value
    return self.fn(self.cls)
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/wagtail/admin/edit_handlers.py", line 768, in get_edit_handler
    return edit_handler.bind_to_model(cls)
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/wagtail/admin/edit_handlers.py", line 131, in bind_to_model
    new.on_model_bound()
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/wagtail/admin/edit_handlers.py", line 276, in on_model_bound
    for child in self.children]
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/wagtail/admin/edit_handlers.py", line 276, in <listcomp>
    for child in self.children]
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/wagtail/admin/edit_handlers.py", line 131, in bind_to_model
    new.on_model_bound()
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/wagtail/admin/edit_handlers.py", line 276, in on_model_bound
    for child in self.children]
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/wagtail/admin/edit_handlers.py", line 276, in <listcomp>
    for child in self.children]
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/wagtail/admin/edit_handlers.py", line 131, in bind_to_model
    new.on_model_bound()
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/wagtail/admin/edit_handlers.py", line 480, in on_model_bound
    self.db_field = self.model._meta.get_field(self.field_name)
  File "/Users/jlspencergarlitz/.venvs/jls-jmSlWnDA/lib/python3.6/site-packages/django/db/models/options.py", line 568, in get_field
    raise FieldDoesNotExist("%s has no field named '%s'" % (self.object_name, field_name))
django.core.exceptions.FieldDoesNotExist: PortfolioItemPage has no field named 'project_title'

models.py

class PortfolioPageTag(TaggedItemBase):
        content_object = ParentalKey('PortfolioItemPage',
                                     related_name='tagged_items')


class PortfolioItemPage(Page):
    project_title = blocks.CharBlock()
    project_details_summary = blocks.CharBlock()
    description = blocks.RichTextBlock()
    date = blocks.DateBlock()
    client = blocks.CharBlock()
    tags = ClusterTaggableManager(through=PortfolioPageTag, blank=True)
    location = blocks.CharBlock()
    client_photo = ImageChooserBlock(required=False)
    client_title = CommonHeadingBlock(required=False)
    client_testimonial = blocks.RichTextBlock(required=False)
    images = blocks.ListBlock(ImageChooserBlock())

    content_panels = Page.content_panels + [
        FieldPanel('project_title'),
        MultiFieldPanel([
            FieldPanel('project_details_summary'),
            FieldPanel('description'),
            FieldPanel('date')],
            heading="Project Basics",
            classname="collapsible collapsed"
        ),
        MultiFieldPanel([
            FieldPanel('client'),
            FieldPanel('tags'),
            FieldPanel('location')],
            heading="Meta Information",
            classname="collapsible collapsed"
        ),
        MultiFieldPanel([
            ImageChooserPanel('client_photo'),
            FieldPanel('client_title'),
            FieldPanel('client_testimonial')],
            heading="Client Testimonial",
            classname="collapsible collapsed"
        ),
        FieldPanel('images',)
    ]

    promote_panels = Page.promote_panels + [
        FieldPanel('tags'),
    ]

我确保拼写正确并完成了不少谷歌搜索,但我似乎无法解决问题。我可以告诉该模型中的字段。删除content_panels时,我能够将模型正确地迁移到数据库中,但是一旦我添加content_panel,它就会失败。我没有正确使用FieldPanel或MultiFieldPanel吗?我在Python3中使用Wagtail2和Django2。

1 个答案:

答案 0 :(得分:1)

blocks.CharBlock()等块对象仅在StreamField个定义中有效。您需要使用Django model fields,例如models.CharField()或Wagtail&#39; RichTextField