创建 CustomUser 时出现 Syncdb 错误

Syncdb error when creating CustomUser

问题是我创建了自定义用户:

class CustomUser(AbstractUser):
    mobile = models.CharField(max_length=16)
    address = models.CharField(max_length=100)

并在 settings.py 中写下:AUTH_USER_MODEL = 'login.CustomUser' 当我第一次 运行 manage.py syncdb 时(当 db 不包含任何表时),它会抛出一个错误:django.db.utils.ProgrammingError: relation "auth_group" does not exist 但是当我 运行 manage.py syncdb 带表的db已经存在的时候,那就没关系了,多建几个表就行了。当数据库不包含表时,运行 它有什么问题?

如错误所述,您的自定义用户 table 与 auth_group table 相关,因此除非 table 已创建或存在,否则您无法创建此新 table 在数据库中。

当您说“带有 table 的数据库已经存在,那么没关系”,您是手动创建了 table 还是在 INSTALLED_APPS 中包含了管理应用程序?

因为如果你包含管理应用程序,它会自动创建 auth_group table,所以你不会看到那个问题

试试这个

  1. 在包含自定义用户模型的应用程序目录中创建一个 migration 目录。
  2. migration 目录中创建一个空的 __init__.py 文件。
  3. 执行./manage.py makemigrations.
  4. 执行./manage.py migrate.

我认为当您使用自定义用户模型时,您需要创建迁移。此外,syncdb 已被弃用,并将在 Django 1.9 中删除,因此最好开始使用 ./manage.py migrate 命令。