2013-04-28 68 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