问题在于,我将(Legacy)表与(UserProfile)django模型与M2MField相关并且还通过中间表,但似乎没有生成关系。旧表只是一个没有其他关系的表。
我正在使用带有Python 2.7版,django 1.8和PostgreSQL 9.4的Anaconda发行版。这是代码。
models.py
from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import User
class Legacy(models.Model): # Legacy DB with no pk column
... # columns
class Meta:
managed = False
db_table = 'legacydb_name'
class UserProfile(models.Model):
user = models.OneToOneField(User)
username = models.CharField(max_length = 16)
mylegacy = models.ManyToManyField(Legacy,
through = 'Legacylink',
related_name = 'legacy_mylegacy')
def __unicode__(self):
return "%s"%(self.user, )
class Legacylink(models.Model):
userprofile = models.ForeignKey(UserProfile)
yourlegacy = models.ForeignKey(Legacy)
class Meta:
db_table = 'legacy_link'
unique_together = ('userprofile','yourlegacy')
admin.py
from django.contrib import admin
from myapp.models import UserProfile, Legacy, Legacylink
# Register your models here.
admin.site.register(UserProfile)
admin.site.register(Legacy)
admin.site.register(Legacylink)
迁移后没有错误,生成的UserProfile表显示UserProfile和Legacy DB之间没有关系。我的意思是,UserProfile表没有名为my legacy的列,也没有名为Legacylink的表。
我已经搜索了很多关于如何将ManyToManyField与遗留数据库一起使用的信息...我也非常感谢SO提供了很多帮助,比如说 unique_together,about ProgrammingError,intermediary table。 我跟着那里的许多导游,但我无法解决我的问题......
以下是我的要求:
如果您让我了解一些使用M2MField处理旧数据库的指南,我将不胜感激。