如何自定义奥斯卡地址表单字段?

2024-03-29 13:43:55 发布

您现在位置:Python中文网/ 问答频道 /正文

在定制了django oscar应用程序(address)并在运行migrate时添加了一个名为“area”的新字段后,它给了我为UserAddress指定的未知字段(area)

我用了命令 ./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 *

^{pr2}$

myappsfolder中创建的__init__.py是空的,我是否应该向这些文件中添加一些内容?在

我应该如何自定义此应用程序?或者其他应用程序? 如果我在oscar/apps/address/abstract_models.py中编辑模型,它只适用于本地主机,并且表单中的错误消失,这意味着django仍然从oscar/apps读取模型,而不是从myappsfolder读取模型。在


Tags: apps文件djangofrompy模型import应用程序
1条回答
网友
1楼 · 发布于 2024-03-29 13:43:55

不能用这种方式重写AbstractAddress,因为更改不会传播到其他模型,例如直接子类AbstractAddress的{}。相反,您需要重写要更改的特定地址模型。因此,如果要更改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应用程序并在那里执行相同的操作,因为这是模型所在的地方。在

相关问题 更多 >