South在我的模型中忽略了ManyToManyField

时间:2013-04-28 00:27:50

标签: django migration many-to-many django-south

我的模特:

class Article(models.Model):
    user    = models.ForeignKey(User)
    categories = models.ManyToManyField(AuditGroup)
    topic   = models.ManyToManyField(Topic)
    title   = models.CharField(max_length=255)
    short_desc = models.TextField(blank=True)

创建了迁移:

class Migration(SchemaMigration):

    def forwards(self, orm):
        # Adding model 'Article'
        db.create_table('certification_article', (
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
            ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
            ('title', self.gf('django.db.models.fields.CharField')(max_length=255)),
            ('short_desc', self.gf('django.db.models.fields.TextField')(blank=True)),
        ))

正在制作两个多对多关系中的任何一个!我错过了什么?

注意:我的模型中有一个奇怪的东西(接管项目):我的model.py中有一个类ProgramOverview。但是这个类中的所有代码都是小写的!实际上,在schemamigration上运行--auto会产生有关ProgramOverview的错误。删除它,南想要删除这个类(原来这是DB中需要的视图!) - >这似乎是因为一些“hacky-ish”原因而被放在那里......所以我用以下方式制作了迁移:

./manage.py schemamigration certification --add-model Article

编辑:是真正的问题。不知怎的,我的编辑搞砸了ProgramOverview代码。恢复代码后,我能够运行./manage.py schemamigration认证--auto,它生成了所有需要的表格! 结束编辑

虽然我需要多对多。

1 个答案:

答案 0 :(得分:2)

您不会在该声明中看到M2M。你看到的是正确的

M2M“字段”是新表的抽象。 “文章”模型中没有数据库级别字段。

向下扫描页面以查看相关的M2M表创建代码。