如何自定义奥斯卡地址表单字段?
How to customize oscar address form fields?
自定义 django oscar 应用程序(地址)并添加一个名为 'area' 的新字段后,当我 运行 迁移时,它给了我为 UserAddress[=23= 指定的未知字段(区域) ]
我用了命令
./manage.py oscar_fork_app address myappsfolder/
在创建文件夹和其中的 __init__.py
文件之后
然后我开始像这样自定义应用程序:
#myappsfolder/address/models.py
from django.db import models
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from oscar.apps.address.abstract_models import AbstractAddress
class Address(AbstractAddress):
area = models.CharField(_("Area"), max_length=120,
choices=settings.AREA_CHOICES, blank=True)
from oscar.apps.address.models import *
#myappsfolder/address/forms.py
from oscar.apps.address import forms as base_forms
class UserAddressForm(base_forms.UserAddressForm):
class Meta(base_forms.UserAddressForm.Meta):
fields = ['area']
我没有触及命令 ./manage.py oscar_fork_app address myappsfolder/
创建的 admin.py
、 config.py
和 __init__.py
我在 myappsfolder
中创建的 __init__.py
也是空的,我应该向这些文件添加一些内容吗?
我应该如何自定义此应用程序?或任何其他应用程序?
如果我在 oscar/apps/address/abstract_models.py
中编辑模型,它只适用于本地主机并且表单中的错误消失,这意味着 django 仍在从 oscar/apps
而不是 myappsfolder
.[=23= 读取模型]
您不能以这种方式覆盖 AbstractAddress
,因为更改不会传播到其他模型,例如直接子类 AbstractAddress
的 UserAddress
。相反,您需要覆盖要更改的特定地址模型。因此,如果您想更改 UserAddress
,则覆盖该特定模型:
from oscar.apps.address.abstract_models import AbstractUserAddress
class UserAddress(AbstractUserAddress):
area = models.CharField(_("Area"), max_length=120, choices=settings.AREA_CHOICES, blank=True)
...之后您对 UserAddressForm
的更改应该起作用。
如果您还需要覆盖 ShippingAddress
,那么您还必须分叉 shipping
应用程序并在那里做同样的事情,因为那是模型所在的地方。
自定义 django oscar 应用程序(地址)并添加一个名为 'area' 的新字段后,当我 运行 迁移时,它给了我为 UserAddress[=23= 指定的未知字段(区域) ]
我用了命令
./manage.py oscar_fork_app address myappsfolder/
在创建文件夹和其中的 __init__.py
文件之后
然后我开始像这样自定义应用程序:
#myappsfolder/address/models.py
from django.db import models
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from oscar.apps.address.abstract_models import AbstractAddress
class Address(AbstractAddress):
area = models.CharField(_("Area"), max_length=120,
choices=settings.AREA_CHOICES, blank=True)
from oscar.apps.address.models import *
#myappsfolder/address/forms.py
from oscar.apps.address import forms as base_forms
class UserAddressForm(base_forms.UserAddressForm):
class Meta(base_forms.UserAddressForm.Meta):
fields = ['area']
我没有触及命令 ./manage.py oscar_fork_app address myappsfolder/
创建的 admin.py
、 config.py
和 __init__.py
我在 myappsfolder
中创建的 __init__.py
也是空的,我应该向这些文件添加一些内容吗?
我应该如何自定义此应用程序?或任何其他应用程序?
如果我在 oscar/apps/address/abstract_models.py
中编辑模型,它只适用于本地主机并且表单中的错误消失,这意味着 django 仍在从 oscar/apps
而不是 myappsfolder
.[=23= 读取模型]
您不能以这种方式覆盖 AbstractAddress
,因为更改不会传播到其他模型,例如直接子类 AbstractAddress
的 UserAddress
。相反,您需要覆盖要更改的特定地址模型。因此,如果您想更改 UserAddress
,则覆盖该特定模型:
from oscar.apps.address.abstract_models import AbstractUserAddress
class UserAddress(AbstractUserAddress):
area = models.CharField(_("Area"), max_length=120, choices=settings.AREA_CHOICES, blank=True)
...之后您对 UserAddressForm
的更改应该起作用。
如果您还需要覆盖 ShippingAddress
,那么您还必须分叉 shipping
应用程序并在那里做同样的事情,因为那是模型所在的地方。