我们有一个名为sessions
的应用程序,由于Django有类似的django.contrib.sessions
应用程序,我们需要创建一个AppConfig来修复“重复应用程序”错误,也就是说,我们将应用程序标签设置为common.sessions
因此,我们有以下文件夹/文件结构:
common
sessions
__init__.py
apps.py
models.py
__init__.py
default_app_config = 'common.sessions.apps.CommonSessionsConfig'
apps.py
class CommonSessionsConfig(AppConfig):
name = 'common.sessions'
label = 'common.sessions'
models.py
class SessionEventType(models.Model):
name = models.CharField()
class SessionEventTypeMapping(models.Model):
session_event_type = models.ForeignKey(SessionEventType)
settings.py
INSTALLED_APPS = (
'common.sessions',
...
)
运行manage.py migrations
将引发以下错误:
File "/virtualenv/backoffice/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py", line 125, in handle
migration_name=self.migration_name,
File "/virtualenv/backoffice/lib/python2.7/site-packages/django/db/migrations/autodetector.py", line 43, in changes
changes = self._detect_changes(convert_apps, graph)
File "/virtualenv/backoffice/lib/python2.7/site-packages/django/db/migrations/autodetector.py", line 111, in _detect_changes
self.new_apps = self.to_state.apps
File "/virtualenv/backoffice/lib/python2.7/site-packages/django/utils/functional.py", line 59, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/virtualenv/backoffice/lib/python2.7/site-packages/django/db/migrations/state.py", line 166, in apps
return StateApps(self.real_apps, self.models)
File "/virtualenv/backoffice/lib/python2.7/site-packages/django/db/migrations/state.py", line 248, in __init__
raise ValueError(msg.format(field=operations[0][1], model=lookup_model))
ValueError: Lookup failed for model referenced by field common.sessions.SessionEventTypeMapping.session_event_type: common.sessions.common.sessions.SessionEventType
显然,它在这一部分失败,无法找到SessionEventType
类/模型,即使它们只是在同一个models.py
文件中,并且最终查找common.sessions.common.sessions.SessionEventType
,这很奇怪:
session_event_type = models.ForeignKey(SessionEventType)
还尝试了此变体:
session_event_type = models.ForeignKey('common.sessions.SessionEventType')
但是它没有帮助,以及这个相关的issue。顺便说一下,我们仍在使用Py2/Django1.8,因为这是一个庞大的项目,我们无法轻松升级版本。我们错过什么了吗?检查了AppConfig/ForeignKey文档,但似乎没有相关信息。如果我们不使用FK字段,也不会抛出错误(即,可以进行非关系字段迁移)。我们只想让makemigrations
工作
目前没有回答
相关问题 更多 >
编程相关推荐