2013-04-28 69 views
2

我的模型:南忽略ManyToManyField在我的模型

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的错误。删除它,南想要删除这个类(事实证明这是一个需要在数据库中的视图!) - >这似乎已经放在那里的一些“哈克伊什”原因...所以我产生了迁移搭配:

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

编辑:是真正的问题。不知何故,我的编辑器弄乱了ProgramOverview代码。恢复代码后,我可以运行./manage.py schemamigration认证--auto,它生成了所有需要的表格! END编辑

虽然我需要多对多。

回答

2

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

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

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

+0

我明白了,我可以进一步了解:'certification.article':{ 'Meta':{'object_name':'Article'}, 'categories':('django.db.models.fields .related.ManyToManyField',[],{'to':“orm ['certification.AuditGroup']”,'symmetrical':'False'}), 但是当我执行代码来保存一个新的对象关系,我得到 关系“certification_article_categories”不存在 这确实很奇怪,不是吗?那是因为--add-model标志?为什么迁移不会创建关系表? – faboolous 2013-04-29 14:23:48

+0

没关系。我的具体问题的关键在于我的注意:在提交问题。这不是因为一个怪异的理由,但是因为我一定对我的编辑做错了事。我拿起原始的ProgramOverview代码,将其粘贴回我的编辑models.py中,并执行'./manage.py schemamigration my_app --auto' - 这次工作正常,表格创建正确。 – faboolous 2013-04-29 15:43:16