2015-07-02 69 views
3

我想添加一個字段Django用戶。所以我檢查這個文件:https://docs.djangoproject.com/en/1.8/topics/auth/customizing/Django AbstractUser migrate無法解析

我決定用AbstractUser來解決我的問題。

地址:

class MyUser(AbstractUser): 
    nickname = models.CharField(max_length=64, blank=False) 

muse.models

並將AUTH_USER_MODEL = "muse.MyUser"添加到settings.py文件。

但是,當我migrate總是有錯誤:

Synchronize unmigrated apps: staticfiles, messages 
    Apply all migrations: admin, contenttypes, muse, auth, sessions 
Synchronizing apps without migrations: 
    Creating tables... 
    Running deferred SQL... 
    Installing custom SQL... 
Running migrations: 
    Rendering model states... DONE 
    Applying admin.0001_initial...Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line 
    utility.execute() 
    File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 330, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Library/Python/2.7/site-packages/django/core/management/base.py", line 390, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/Library/Python/2.7/site-packages/django/core/management/base.py", line 441, in execute 
    output = self.handle(*args, **options) 
    File "/Library/Python/2.7/site-packages/django/core/management/commands/migrate.py", line 221, in handle 
    executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial) 
    File "/Library/Python/2.7/site-packages/django/db/migrations/executor.py", line 110, in migrate 
    self.apply_migration(states[migration], migration, fake=fake, fake_initial=fake_initial) 
    File "/Library/Python/2.7/site-packages/django/db/migrations/executor.py", line 147, in apply_migration 
    state = migration.apply(state, schema_editor) 
    File "/Library/Python/2.7/site-packages/django/db/migrations/migration.py", line 115, in apply 
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state) 
    File "/Library/Python/2.7/site-packages/django/db/migrations/operations/models.py", line 59, in database_forwards 
    schema_editor.create_model(model) 
    File "/Library/Python/2.7/site-packages/django/db/backends/base/schema.py", line 232, in create_model 
    definition, extra_params = self.column_sql(model, field) 
    File "/Library/Python/2.7/site-packages/django/db/backends/base/schema.py", line 131, in column_sql 
    db_params = field.db_parameters(connection=self.connection) 
    File "/Library/Python/2.7/site-packages/django/db/models/fields/related.py", line 1989, in db_parameters 
    return {"type": self.db_type(connection), "check": []} 
    File "/Library/Python/2.7/site-packages/django/db/models/fields/related.py", line 1980, in db_type 
    rel_field = self.related_field 
    File "/Library/Python/2.7/site-packages/django/db/models/fields/related.py", line 1886, in related_field 
    return self.foreign_related_fields[0] 
    File "/Library/Python/2.7/site-packages/django/db/models/fields/related.py", line 1620, in foreign_related_fields 
    return tuple(rhs_field for lhs_field, rhs_field in self.related_fields) 
    File "/Library/Python/2.7/site-packages/django/db/models/fields/related.py", line 1607, in related_fields 
    self._related_fields = self.resolve_related_fields() 
    File "/Library/Python/2.7/site-packages/django/db/models/fields/related.py", line 1592, in resolve_related_fields 
    raise ValueError('Related model %r cannot be resolved' % self.rel.to) 
ValueError: Related model 'muse.MyUser' cannot be resolved 

有什麼不對?

+3

如果你刪除你的遷移(或'mv muse/migrations muse/migrations-BU'),然後重新運行'./manage.py makemigrations, ./manage.py migrate'? –

+0

哦..問題已修復,非常感謝。 –

+2

關閉問題... – madzohan

回答

0

在我的情況下,一個棘手的解決方法是可用的,我不建議它,因爲我的情況是如此特別。我有自己的數據庫管理,並且由於某種原因將Django查詢構建器放在一邊(這是一個大學項目,它不被允許)。我手動操作數據庫結構,並擁有自己的用戶模型和身份驗證後端。

解決方法是創建遷移,然後手動刪除其操作。創建遷移之後,我必須禁用AUTH_USER_MODEL,遷移然後啓用該設置以使認證系統正常工作。

希望它有幫助。