django.core.exceptions.FieldError: Unknown field(s) (title) specified for Customer

django.core.exceptions.FieldError: Unknown field(s) (title) specified for Customer

我正在尝试将 non-Wagtail 模型注册为片段,并允许从另一个片段的界面创建和保存模型。

我遇到了这个错误,但不知道从哪里开始。我看到的所有其他 Whosebug 帖子都是专门针对自定义用户模型的,我没有这样做。

我试过为代码段设置标题字段,以及将 'title' 附加到 get_context。

这就是我想要完成的,我不确定我是否以最好的方式做到了: 有客户和工单。每个工作订单都有一个客户的外键,我的目标是能够在工作订单片段界面中创建内联客户模型(或 select 来自现有列表)。

客户代码段

@register_snippet
class Customer(models.Model):
    """Customer model."""

    customer_name = models.CharField(max_length=100, blank=False, null=False, help_text="John Doe")
    ...more regular customer info fields (address, city, state, etc.)...
    customer_home_phone = models.CharField(max_length=15, blank=False, null=False, help_text="Home Phone")

    panels = Page.content_panels + [
        MultiFieldPanel(
            [
                FieldPanel("customer_name"),
                FieldPanel("customer_home_phone"),
            ],
            heading="Customer Contact"
        ),
    ]

工单片段

@register_snippet
class WorkOrder(ClusterableModel, models.Model):
    """Workorder model."""

    STATUS_CHOICES = (
        ('o', 'Open'),
        ('c', 'Closed'),
        ('x', 'Cancelled'),
    )


    ...workorder fields (service address, city, state, etc)...
    status = models.CharField(max_length=1, choices=STATUS_CHOICES, default='o')

    related_customer = models.ForeignKey(Customer, null=False, blank=False, on_delete=models.CASCADE)

    panels = [
        FieldPanel('status'),
        SnippetChooserPanel('related_customer'),
        MultipleImagesPanel('workorder_images', label="Relevant Images", image_field_name='image'),
    ]

class WorkOrderImage(Orderable):
    """WorkOrder Image Intermediary"""

    page = ParentalKey(WorkOrder, on_delete=models.CASCADE, related_name='workorder_images')
    image = models.ForeignKey(
        'wagtailimages.Image',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name='+'
    )

    panels = [
        ImageChooserPanel('image'),
    ]

我还包含了我的 multi-image 选择器,但我认为它与问题无关。

我不仅要解决这个问题,还要寻求一些关于如何最好地解决创建客户并将其保存为工作订单的问题的建议。

我在客户代码段界面上单击“添加客户”时遇到的问题是 django.core.exceptions.FieldError: Unknown field(s) (title) specified for Customer

我在想也许我需要将我的 Customer 模型设为 ClusterableModel 而不是我的 Workorders。

这是我的回溯。

Internal Server Error: /admin/snippets/workorders/customer/add/
Traceback (most recent call last):
  File "/Users/joseph/Python/PC_Work_Order/venv/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/Users/joseph/Python/PC_Work_Order/venv/lib/python3.9/site-packages/django/core/handlers/base.py", line 179, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/joseph/Python/PC_Work_Order/venv/lib/python3.9/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/Users/joseph/Python/PC_Work_Order/venv/lib/python3.9/site-packages/wagtail/admin/urls/__init__.py", line 110, in wrapper
    return view_func(request, *args, **kwargs)
  File "/Users/joseph/Python/PC_Work_Order/venv/lib/python3.9/site-packages/wagtail/admin/auth.py", line 188, in decorated_view
    return view_func(request, *args, **kwargs)
  File "/Users/joseph/Python/PC_Work_Order/venv/lib/python3.9/site-packages/wagtail/snippets/views/snippets.py", line 140, in create
    form_class = edit_handler.get_form_class()
  File "/Users/joseph/Python/PC_Work_Order/venv/lib/python3.9/site-packages/wagtail/admin/edit_handlers.py", line 350, in get_form_class
    return get_form_for_model(
  File "/Users/joseph/Python/PC_Work_Order/venv/lib/python3.9/site-packages/wagtail/admin/edit_handlers.py", line 62, in get_form_for_model
    return metaclass(class_name, (form_class,), form_class_attrs)
  File "/Users/joseph/Python/PC_Work_Order/venv/lib/python3.9/site-packages/wagtail/admin/forms/models.py", line 75, in __new__
    new_class = super(WagtailAdminModelFormMetaclass, cls).__new__(cls, name, bases, attrs)
  File "/Users/joseph/Python/PC_Work_Order/venv/lib/python3.9/site-packages/modelcluster/forms.py", line 234, in __new__
    new_class = super(ClusterFormMetaclass, cls).__new__(cls, name, bases, attrs)
  File "/Users/joseph/Python/PC_Work_Order/venv/lib/python3.9/site-packages/django/forms/models.py", line 268, in __new__
    raise FieldError(message)
django.core.exceptions.FieldError: Unknown field(s) (title) specified for Customer
[20/Dec/2020 02:09:11] "GET /admin/snippets/workorders/customer/add/ HTTP/1.1" 500 104388

问题出在客户这一行class:

panels = Page.content_panels + [...]

Page 模型在 content_panels 中定义了一个 'title' 字段,但您没有。您可能希望它只是 panels = [...] 而不是。