【问题标题】:South ignores ManyToManyField in my modelSouth 在我的模型中忽略了 ManyToManyField
【发布时间】:2013-04-28 00:27:50
【问题描述】:

我的模特:

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 的错误。删除它,南想删除这个类(原来这是数据库中需要的一个视图!)-->这似乎是出于某种“hacky-ish”的原因......所以我制作了迁移与:

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

编辑:是真正的问题。不知何故,我的编辑器弄乱了 ProgramOverview 代码。恢复代码后,我能够运行 ./manage.py schemamigration certificate --auto 生成所有需要的表! 结束编辑

我需要多对多。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 我明白了,我可以看得更远:'certification.article': { 'Meta': {'object_name': 'Article'}, 'categories': ('django.db. models.fields.related.ManyToManyField', [], {'to': "orm['certification.AuditGroup']", 'symmetrical': 'False'}),但是当我执行代码以保存新对象时那些关系,我得到关系“certification_article_categories”不存在这确实很奇怪,不是吗?那是因为 --add-model 标志吗?为什么迁移不创建关系表?
    • 没关系。我的具体问题的关键在我的注释中:在问题提交中。这不是出于 hacky-ish 的原因,而是因为我一定是我的编辑器做错了什么。我拿起原始的 ProgramOverview 代码,将其粘贴回我正在编辑的 models.py 中,然后执行 ./manage.py schemamigration my_app --auto - 这次工作正常,并且表格创建正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 2017-12-09
    • 2018-09-08
    • 1970-01-01
    相关资源
    最近更新 更多