Django-Oscar表单fork - 错误未知字段(但字段在模型中)

问题描述 投票:1回答:1

我正在尝试分叉django-oscar来更改产品属性,多选项的仪表板表单。需要为每个选项都有一个描述字段。

project/oscar_fork/catalogue/models.py:
from django.db import models
from django.utils.translation import ugettext_lazy as _
from oscar.apps.catalogue.abstract_models import AbstractAttributeOption, AbstractAttributeOptionGroup

class AbstractAttributeOption(AbstractAttributeOption):
  description = models.CharField(_('Description'), max_length=250, blank=True)
  group = models.ForeignKey(
        'catalogue.AttributeOptionGroup',
        on_delete=models.CASCADE,
        related_name='optionsblabla',
        verbose_name=_("Group"))

from oscar.apps.catalogue.models import *

我的数据库中的额外字段“description”更改了模型,但我的表单字段返回仍无法找到此字段。

project/oscar_fork/dashboard/catalogue/forms.py:
from oscar.apps.dashboard.catalogue import forms as base_forms

class AttributeOptionForm(base_forms.AttributeOptionForm):
  class Meta(base_forms.AttributeOptionForm.Meta):
    fields = ('option', 'description')

如果我直接在Oscar应用程序中更改form.py和models.py字段,则可以正常工作。其他形式可以很容易地分叉,如上所示。尝试使用AttributeOptionGroupForm。我认为导入序列存在问题。我怎么解决这个问题?

Error:
django.core.exceptions.FieldError: Unknown field(s) (description) specified for AttributeOption

我正在使用django-oscar v1.6。 Django v.2.08。

django django-models django-forms django-oscar
1个回答
2
投票

您的具体模型应该命名为AttributeOption而没有'Abstract',否则奥斯卡不会拿起它并使用自己的AttributeOption模型,而没有描述:

class AttributeOption(AbstractAttributeOption):
    description = ...

之后你必须运行makemigrationsmigrate。检查最后导入的source code模块的models。您将看到他们的动态模型加载如何工作:

if not is_model_registered('catalogue', 'AttributeOption'):
    class AttributeOption(AbstractAttributeOption):
        pass
© www.soinside.com 2019 - 2024. All rights reserved.