繁体   English   中英

django.core.exceptions.FieldError:为客户指定的未知字段(标题)

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

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

我一直收到这个错误,不知道从哪里开始。 我看到的所有其他 StackOverflow 帖子都专门针对自定义用户 model,我没有这样做。

我尝试为片段设置一个标题字段,并将一个“标题”附加到 get_context。

这就是我想要完成的事情,我不确定我是否以最好的方式做到了:有客户和工作订单。 每个工作订单都有一个客户的外键,我的目标是能够在 WorkOrder 片段界面中内联创建客户模型(或现有列表中的 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'),
    ]

我还包括了我的多图像选择器,尽管我认为它与问题无关。

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

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

我在想也许我需要让我的客户 model 成为 ClusterableModel 而不是我的工作订单。

这是我的回溯。

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 + [...]

页 model 在content_panels中定义了一个“标题”字段,但您没有。 您可能希望这只是panels = [...]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM