Django没有为自定义用户模型搜索正确的表名

时间:2016-10-20 21:58:46

标签: django python-3.x django-models

我正在尝试在我的Django项目中使用自定义用户模型。运行迁移后,数据库表名为accounts_listuser,而Django似乎在accounts_user中查找它们。我怎样才能更改这一点,以便Django查看用户模型的正确表格accounts_user而不是accounts_listuser

在我的settings.py中:

# Auth user models
AUTH_USER_MODEL = 'accounts.User'
AUTHENTICATION_BACKENDS = (
    'accounts.authentication.PersonaAuthenticationBackend'
)

accounts / models.py文件:

class User(models.Model):
    email = models.EmailField(primary_key=True)
    last_login = models.DateTimeField(default=timezone.now)
    REQUIRED_FIELDS = ()
    USERNAME_FIELD = 'email'
    is_authenticated = True
    is_anonymous = False

查询失败的文件(accounts / authentication.py):

from django.contrib.auth import get_user_model

User = get_user_model()

# .. user's email retrieved ..

    def get_user(self, email):
        try:
            return User.objects.get(email=email)
        except User.DoesNotExist:
            return None

完整的源代码can be found here,如果它有帮助。

1 个答案:

答案 0 :(得分:1)

在这种情况下,不确定correct table的含义是什么,但这种行为听起来很正确,因为您的模型被称为用户,并在名为accounts的应用中声明。

您可以使用类Meta属性db_table覆盖自动生成的表名:https://docs.djangoproject.com/en/1.10/ref/models/options/#db-table

同样只是一个注释,django文档建议您的自定义用户模型继承自AbstractBaseUser,否则您将负责自己实现相当多的事情。 https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#specifying-a-custom-user-model