Django-Oscar form fork - 错误未知字段(但字段在模型中)
Django-Oscar form fork - Error unknown fields (but fields are in the models)
我正在尝试 fork 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" 更改了模型,但我的表单字段 returns 仍然找不到该字段。
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.
你的具体模型应该命名为 AttributeOption
而没有 'Abstract'
,否则 oscar 不会选择它并使用它自己的 AttributeOption
模型,它没有描述:
class AttributeOption(AbstractAttributeOption):
description = ...
之后您将必须 运行 makemigrations
和 migrate
。
检查最后导入的 models
模块的 source code。您将看到他们的动态模型加载是如何工作的:
if not is_model_registered('catalogue', 'AttributeOption'):
class AttributeOption(AbstractAttributeOption):
pass
我正在尝试 fork 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" 更改了模型,但我的表单字段 returns 仍然找不到该字段。
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.
你的具体模型应该命名为 AttributeOption
而没有 'Abstract'
,否则 oscar 不会选择它并使用它自己的 AttributeOption
模型,它没有描述:
class AttributeOption(AbstractAttributeOption):
description = ...
之后您将必须 运行 makemigrations
和 migrate
。
检查最后导入的 models
模块的 source code。您将看到他们的动态模型加载是如何工作的:
if not is_model_registered('catalogue', 'AttributeOption'):
class AttributeOption(AbstractAttributeOption):
pass