2013-04-30 65 views
1

因此,我已成功從配置文件模型遷移到擴展用戶模型。數據遷移都能正常運作,但我不能從管理員訪問我的用戶,我得到以下錯誤:遷移後無法訪問管理員中的用戶

DatabaseError: (1146, "Table 'mydb.app_myuser_groups' doesn't exist") 

所有我在models.py定義如下:

class MyUser(AbstractUser): 
    isSpecial = models.BooleanField(default=True) 

有其次是these instructions。我需要做更多的工作才能實現這個目標嗎?

+0

可能是一個愚蠢的問題,而是:在mydb數據庫確實存在app_myuser_groups? – 2013-04-30 14:46:25

+0

@Steve不,但我想知道爲什麼管理員認爲它應該是。 – fredley 2013-04-30 16:58:06

回答

0

AbstractUser繼承自PermissionMixin,其具有ManyToManyFieldGroup模型。所以數據庫中應該有一個app_myuser_groups表。 South可能能夠創建中間表,但我不知道如何。我所知道的是刪除app_myuser後應該工作,即使你的遷移將被切碎。

這個關於adding a through table in a migration的問題應該會給你更多的見解。

+0

通過'rename_table'完成我的遷移後,我可以在其他'auth'表中使用這種方法嗎?我很驚訝,這在其他地方還沒有被覆蓋...... – fredley 2013-05-01 12:23:25

+0

不幸的是,我仍然不滿意南遷。我只有一個製作網站(在我對DRY和South不太瞭解的時候製作),而我的其他網站通常是DB重置。 – 2013-05-01 12:45:43

+0

我看過'migrate_table',我不明白爲什麼你不能將它用於其他表格,甚至是中間表格。還有一件事,也許太難以應付,就是改變'groups'字段並添加一個'db_table'參數,指向一個現有的中間表。 – 2013-05-01 12:51:38

1

見我以前的答案here和修改步驟4,如下所示:

# encoding: utf-8 
from south.db import db 
from south.v2 import SchemaMigration 

class Migration(SchemaMigration): 

    def forwards(self, orm): 
     # Fill in the destination name with the table name of your model 
     db.rename_table('auth_user', 'accounts_user') 
     db.rename_table('auth_user_groups', 'accounts_user_groups') 

    def backwards(self, orm): 
     db.rename_table('accounts_user', 'auth_user') 
     db.rename_table('accounts_user_groups', 'auth_user_groups') 

    models = { ....... } # Leave this alone 
相關問題