请帮忙解决这个问题
我在django1.6中扩展了用户模型如下:
class UserProfile(User):
......
......
family = models.CharField(
max_length=30,
blank=True,
)
skype = models.CharField(
max_length=50,
blank=False,
)
email_address = models.EmailField(
max_length=50,
blank=True,
)
.....
....
objects = UserManager()
导致管理面板中出现了一个包含上述字段的表单。填充后的数据存储在数据库表“app_userprofile”中。该表使用外键链接到表“auth_user”。
问题是表“auth_user”字段“用户名”和“密码”为空。但每个用户都需要。
请告诉我在新用户注册(管理面板和网站)数据“用户名”和“密码”落入表“auth_user”后该怎么做
最佳答案
我认为你需要使用 AbstractUser 模型。如果您从 User 模型继承 UserProfile,您将获得 2 个具有相同字段的表,并且当您填写 app.UserProfile 密码字段时 - 值不会出现在 auth.User 表中。
当然你可以这样做:https://stackoverflow.com/a/23390975/1761844但更好的方法 - 创建您自己的自定义用户:
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
... your custom fields ...
并添加到您的settings.py
AUTH_USER_MODEL = 'app.CustomUser'
此后,您将获得带有自定义字段的用户模型。您可以将其导入您的应用程序中,如下所示:
from django.contrib.auth import get_user_model
User = get_user_model()
并像这样创建外键:
owner = models.OneToOneField(settings.AUTH_USER_MODEL)
Django 文档链接:https://docs.djangoproject.com/en/dev/topics/auth/customizing/#extending-django-s-default-user
关于python - 如何扩展模型用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23390543/