我正在尝试在我的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,如果它有帮助。
答案 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