您好,欢迎来到步遥情感网。
搜索
您的当前位置:首页Django user拓展

Django user拓展

来源:步遥情感网

通过继承AbstractUser来拓展user表的字段

from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
    isProject = models.BooleanField(verbose_name="项目权限", db_column='is_project', default=0)
    
    class Meta:
        db_table = 'user'
        verbose_name = "用户"
        verbose_name_plural = '用户管理'
class UserDeserializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'
    
    def create(self, validated_data):
        register_info = {
            'username': validated_data.get('username'),
            'password': validated_data.get('password'),
            'isProject': validated_data.get('isProject', 0),
            'email':validated_data.get('email')
        }
        user = User.objects.create_user(**register_info)
        user.save()
        return user

如果想要通过反序列化来创建用户,那么一定要重写create()方法,不然创建的密码是明文的,是无法登录成功的。

使用了user拓展之后,django的后台会无法看到原来的用户添加功能

 需要在admin.py文件中重新注册

admin.site.register(User)

然后又会出现新的问题,如果使用后台去添加用户,用户的密码是明文的。

from django.contrib.auth.admin import UserAdmin

admin.site.register(User, UserAdmin)

通过这样注册可以让添加用户的密码是加密的,但是修改用户时,拓展的字段看不见了。

from django.contrib import admin
from .models import User
from django.contrib.auth.admin import UserAdmin
from django.utils.translation import gettext_lazy


class UserProfileAdmin(UserAdmin):
    list_display = ('username', 'last_login', 'is_superuser', 'is_staff', 'is_active', 'date_joined')
    fieldsets = (
        (None, {'fields': ('username', 'password', 'first_name', 'last_name', 'email')}),
        
        (gettext_lazy('User Information'), {'fields': ('isProject',)}),
        
        (gettext_lazy('Permissions'), {'fields': ('is_superuser', 'is_staff', 'is_active',
                                                  'groups', 'user_permissions')}),
        
        (gettext_lazy('Important dates'), {'fields': ('last_login', 'date_joined')}),
    )


admin.site.register(User, UserAdmin)

 通过继承UserAdmin,然后添加拓展的字段。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务