【发布时间】:2012-03-30 21:28:17
【问题描述】:
我正在开发一个 Django 站点,使用 Django 1.4 官方版本。我的网站有一些应用程序。其中一个应用程序有一个名为 Campaign 的模型,并具有其他应用程序中模型的 FK。正如 Django 参考 (https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey) 中所建议的,我选择使用字符串而不是相关模型类本身,因为我希望在下一个版本左右有循环引用,这种方法避免了循环导入问题。
当我使用 BitNami djangostack 1.4(Apache、mod_wsgi、MySQL)在 AWS(亚马逊网络服务)上部署站点时,我部署的站点在大多数情况下都能正常工作。在显示Campaign 模型的表单的页面上,Django 在尝试创建依赖于Campaign 模型的外键字段的表单字段时引发异常,抱怨未加载相关模型。有趣/可怕的是,当我将 settings.DEBUG 设置为 True 时(一旦网站上线,我们肯定不会想要的东西),问题就不再发生了!
当我在本地 Django 开发服务器上对其进行测试时,该站点运行良好,并且使用部署在我的 Windows 工作站上的同一个 BitNami djangostack 也运行良好。
这是我在 AWS 控制台上看到的相关 Apache 错误输出。
[error] ERROR :: Internal Server Error: /campaigns/
[error] Traceback (most recent call last):
[error] File "/opt/bitnami/apps/django/lib/python2.6/site-packages/django/core/handlers/base.py", line 101, in get_response
[error] request.path_info)
... (django/wsgi blah blah)
[error] File "/opt/bitnami/apps/django/django_projects/Project/campaign/views.py", line 5, in <module>
[error] from forms import CampaignForm
[error] File "/opt/bitnami/apps/django/django_projects/Project/campaign/forms.py", line 12, in <module>
[error] class CampaignForm(forms.ModelForm):
[error] File "/opt/bitnami/apps/django/lib/python2.6/site-packages/django/forms/models.py", line 206, in __new__
[error] opts.exclude, opts.widgets, formfield_callback)
[error] File "/opt/bitnami/apps/django/lib/python2.6/site-packages/django/forms/models.py", line 160, in fields_for_model
[error] formfield = f.formfield(**kwargs)
[error] File "/opt/bitnami/apps/django/lib/python2.6/site-packages/django/db/models/fields/related.py", line 1002, in formfield
[error] (self.name, self.rel.to))
[error] ValueError: Cannot create form field for 'reward' yet, because its related model 'reward.Reward' has not been loaded yet
所以,这里有一个快速回顾:
- 无论 settings.DEBUG 值如何,我的站点都可以在本地 Django 开发服务器上运行
- 在我的本地 Windows 机器上使用 BitNami 堆栈,无论 settings.DEBUG 值如何,它都能正常工作
- 使用 AWS (Ubuntu) 上的 BitNami 堆栈,它适用于 DEBUG = True 但不适用于 DEBUG = False
我理解错误的含义什么,但我不明白为什么它会发生,即为什么没有加载依赖模型。有没有人遇到过类似的问题,或者有什么建议可以帮助我解决它?
注意:我尝试用 Google 搜索错误消息,但我发现的只是引发该错误的 Django 源代码。我还尝试搜索更一般的查询,例如 mod_wsgi django related model,但我找不到任何与我的问题相关的内容。
【问题讨论】:
-
INSTALLED_APPS中是否包含相关模型的应用程序? -
是的,我网站的所有应用都在
INSTALLED_APPS。应用程序的顺序重要吗? -
我在谷歌搜索时发现的链接之一是blog.dscpl.com.au/2010/03/…。我不确定它是否对我有帮助,但我会看看它。
-
@mbargiel 那个链接救了我!非常感谢!
标签: django amazon-web-services mod-wsgi