python - 如何扩展模型用户?

标签 python django

请帮忙解决这个问题

我在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/

相关文章:

python - 在 Django 中使用哪个模型字段来存储经度和纬度值?

python - 如何在Python中返回多维数组的子数组?

python ValueError : invalid literal for float()

javascript - Vim - 语法突出显示 - Javascript - 字符串和 bool 值相同的颜色

python - 如何更改 django admin css 样式和字体?

django - python 3中的S3BotoStorage

django - 将数据生产者作为工作人员集成到 Django Channels 2.x

python - Pandas - 在整数轴上按位置正确索引,在另一个轴上按标签正确索引(以避免链式分配)

Python - 从输出中删除包含列表中一个或多个子字符串的行

ListView 中的 Django object_list 有两个模型