使用ManyToManyField与遗留数据库

时间:2015-09-03 02:27:27

标签: django django-models manytomanyfield legacy-database

问题在于,我将(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_togetherabout ProgrammingErrorintermediary table。 我跟着那里的许多导游,但我无法解决我的问题......

以下是我的要求:

  1. Legacy DB是否必须具有primary_key的id列?
  2. 如何检查是否已成功创建M2M关系?
  3. 如果您让我了解一些使用M2MField处理旧数据库的指南,我将不胜感激。

0 个答案:

没有答案