【发布时间】:2016-04-09 19:16:47
【问题描述】:
我有一个项目,其中包含许多应用程序,这些应用程序既可以访问具有 100 个表的本地 MySQL 数据库,也可以访问具有更多表的多个外部 MySQL 和 Ms-SQL Server 数据库。所有外部表都使用“managed=False”元数据在模型中定义。
我最近按照 StackOveflow 的发行说明和其他提示等中的说明将 Django 从 1.6 升级到 1.7。
除了我所有访问远程数据库表的应用程序之外,一切似乎都恢复了。这是一个示例消息:
RuntimeError: Conflicting 'bugview_deferred_description_disposition_divisioaf59cb28117de5eb6ddfea0476dab601' models in application 'nvbugsdw': <class 'bug_metrics.models_bugs.BugView_Deferred_Description_Disposition_Divisioaf59cb28117de5eb6ddfea0476dab601'> and <class 'bug_metrics.models_bugs.BugView_Deferred_Description_Disposition_Divisioaf59cb28117de5eb6ddfea0476dab601'>.
表BugView在一个文件名models_bugs.py中定义如下:
class BugView(models.Model):
BugId = models.BigIntegerField(primary_key=True)
Module = models.CharField(max_length=128, null=False)
Requester = models.CharField(max_length=128, null=False)
QAEngineer = models.CharField(max_length=128, null=False)
Engineer = models.CharField(max_length=128, null=False)
RequestDate = models.DateTimeField(null=False)
ModifiedDate = models.DateTimeField(null=False)
Priority = models.CharField(max_length=50, null=False)
Severity = models.CharField(max_length=50, null=False)
Disposition = models.CharField(max_length=64, null=False)
BugAction = models.CharField(max_length=64, null=False)
Origin = models.CharField(max_length=64, null=False)
GeographicOrigin = models.CharField(max_length=128, null=False)
Division = models.CharField(max_length=64, null=False)
Synopsis = models.CharField(max_length=256, null=False)
Description = models.CharField(max_length=1024, null=False)
BugType = models.CharField(max_length=50, null=False)
OriginalBugId = models.BigIntegerField()
class Meta:
app_label = 'nvbugsdw'
managed = False
db_table = 'bugview'
在 views.py 文件中,类的导入方式如下:
from .models_bugs import BugView
我也试过
from models_bugs import BugView
from bug_metrics.models_bugs import BugView
“bug_metrics”是应用名称。
我按照之前在https://code.djangoproject.com/ticket/22280 上发布的所有建议都没有效果。
我在这一点上不知所措。有什么建议吗?
另外,这可能不相关,但是在尝试调试此问题时(通过将 sys.path 转储到 manage.py 中),我注意到在运行命令时 manage.py 中的代码执行了两次
./manage.py runserver --nothreading 0.0.0.0:8081
我的 sys.path 是:
/opt/graphic_tools/gtools
/usr/local/lib/python2.7/dist-packages/South-0.8.4-py2.7.egg
/usr/lib/python2.7
/usr/lib/python2.7/plat-linux2
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages/PIL
/usr/lib/python2.7/dist-packages/gst-0.10
/usr/lib/python2.7/dist-packages/gtk-2.0
/usr/lib/pymodules/python2.7
/usr/lib/python2.7/dist-packages/ubuntu-sso-client
/usr/lib/python2.7/dist-packages/ubuntuone-client
/usr/lib/python2.7/dist-packages/ubuntuone-control-panel
/usr/lib/python2.7/dist-packages/ubuntuone-couch
/usr/lib/python2.7/dist-packages/ubuntuone-installer
/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol
"/opt/graphic_tools/gtools" 是我的项目目录。它不包含 init.py 文件,但包含所有应用程序子目录,包括“gtools”子目录。
【问题讨论】: