我有一个遗留数据库,我希望在我的 django 项目中用作第二个数据库。我将数据库添加到我的设置文件中,然后运行:
python manage.py inspectdb --database=images
脚本在不到一秒的时间内完成,结果令人震惊。它理解我所有的表格——至少我一开始是这么想的。当我尝试运行时:
python manage.py migrate --database=images
我收到这样的错误:
'unique_together' refers to the non-existent field 'commentaryId'.
所有引发错误的表都是多对多链接表,其中包含两个 id 字段,它们共同构成主键(因此必须是“唯一的”)。
这是由inspectdb 创建的模型之一,它引发了这个错误:
class Pagescanannotationscommentaries(models.Model):
pagescanannotationid = models.IntegerField(db_column='pageScanAnnotationId') # Field name made lowercase.
commentaryid = models.IntegerField(db_column='commentaryId') # Field name made lowercase.
class Meta:
managed = False
db_table = 'PageScanAnnotationsCommentaries'
unique_together = (('pageScanAnnotationId', 'commentaryId'),)
我在 stackoverflow 中发现了几个类似我的问题,但这些建议对我没有帮助,或者显然不相关。但我确实在谷歌群组中找到了一个帖子,给了我修复它的提示:https ://groups.google.com/forum/#!topic/django-users/_phTiifN3K0
但即便如此,我发现我的问题有点不同,我在下面的答案中进行了解释。