我正在开发一个订阅网站,其中包括“注册”和“注册”。应用程序。我还使用django-oscar商店进行一次性购买,并在整个网站上使用其UserAddress类。但是,由于我的地址和用户名/电子邮件表单在订阅注册的同一页面上,我使用基于AbstractAddress的临时自定义ModelForm以及signup / forms.py中的特定字段:
# signup/forms.py
from oscar.apps.address.abstract_models import AbstractAddress
class CustomAddressForm(ModelForm):
class Meta:
"""
Using AbstractAddress because UserAddress requires a User and there
is none when signup form is displayed. A UserAddress instance is then
created later, using the User object created after request.POST.
"""
model = AbstractAddress
fields = ['line1', 'line2', 'line4', 'state', 'postcode', 'country']
使用INSTALLED_APPS:
# settings.py
from oscar import get_core_apps
INSTALLED_APPS = [
...
'signup',
...
] + get_core_apps()
它在Django 1.8中都运行良好,但我在部署之前尝试升级到1.9,并收到以下错误消息:
File "path/to/python3.4/django/db/models/fields/related.py", line 942, in formfield(self.name, self.remote_field.model))
Cannot create form field for 'country' yet, because its related model 'address.Country' has not been loaded yet
据推测,我可以将自定义模型移动到django-oscar核心,但不愿意。
我已经看过this个问题,但由于我的案例中的模型在表格的元字段列表中被称为字符串' country',I'我不知道如何在这里导入Country
模型。
我无法在Django 1.9中发现任何ModelForms已更改的迹象。或者有谁知道为什么我的表单在1.8但不是1.9?