【发布时间】:2014-08-16 18:51:57
【问题描述】:
我在 Django 1.6 中有一个自定义的 User 模型:
from django.contrib.auth import models as usermodels
class User(usermodels.User):
sid = models.CharField(max_length=20, unique=True)
slug = models.SlugField(default="slug")
objects = usermodels.UserManager()
在我的一个模板中,我有以下内容:
Welcome, {{ user.username }}: {{ user.sid }}
如果用户已通过身份验证,则仅显示为,例如,如果用户名是 Chris,则显示为“Chris:”。自定义字段sid 未显示!我检查了我的表格,并且用户确实存储了sid。模板似乎没有获取我的自定义字段!
我已将我的自定义模型作为CUSTOM_USER_MODEL 添加到我的设置中。
【问题讨论】:
-
你不应该从 auth.User 继承,而应该从 auth.BaseUser 继承。这样做不是您的实际问题,但在获取数据时会引入不必要的 db 调用。
-
您的意思是
AbstractBaseUser还是AbstractUser?我在 django.auth.models 的任何地方都找不到 BaseUser。 -
我扩展了
AbstractUser而不是User,并在我的设置中设置AUTH_USER_MODEL而不是CUSTOM_USER_MODEL。成功了!
标签: python django django-users