Django用户继承AbstractUser后密码为明文

其实本不应该有这个问题,却花了我很久的时间,因为还是初学阶段。

造成这个原因是因为在admin注册的生活没有指定Admin

在app的admin.py里面

from django.contrib.auth.admin import UserAdmin
admin.site.register(UserProfile, UserAdmin)

下面是重点,UserProfileAdmin继承UserAdmin

model

from django.db import models
from django.contrib.auth.models import AbstractUser# Create your models here.# 继承原有user并且添加自定义user数据表
class UserProfile(AbstractUser):ACCOUNT_TYPE = (('advertiser', '广告主'),('advertiser_agent', '广告主代理'),('inside_staff', '公司内部员工'))ADVERTISEMENT_TYPE = (('网赚类广告', '网赚类广告'),('棋牌类广告', '棋牌类广告'),('互动类广告', '互动类广告'),('健康类广告', '健康类广告'),)account_person = models.IntegerField(verbose_name='建账号人', null=True, blank=True)if_show_gift_account = models.BooleanField(verbose_name='是否显示赠送金额', default=False)advertisement_type = models.CharField(verbose_name='广告类型', max_length=20, choices=ADVERTISEMENT_TYPE, null=True,blank=True)account_type = models.CharField(verbose_name='账号类型', max_length=20, choices=ACCOUNT_TYPE, default="advertiser")nick_name = models.CharField(max_length=50, verbose_name=u"昵称", null=True, blank=True)gender = models.CharField(verbose_name='性别', max_length=6, choices=(("male", u"男"), ("female", "女")),default="male")address = models.CharField(verbose_name='地址', max_length=100, null=True, blank=True)mobile = models.CharField(verbose_name='电话', max_length=11, null=True, blank=True)add_time = models.DateTimeField(auto_now=True)class Meta:verbose_name = "广告主信息"verbose_name_plural = verbose_namepermissions = (('view_userprofile', 'view_userprofile'),)def __str__(self):return self.username

Admin注册

from django.contrib import admin
from .models import UserProfile
from django.contrib.auth.hashers import make_password
from django.contrib.auth.models import User, Group,Permission
from users.forms import UserProfileForm
from rest_framework.response import Response
from rest_framework import status
from django.contrib.auth.admin import UserAdminclass UserProfileAdmin(UserAdmin):# form = UserProfileForm# FIXME 非管理员自定义返回fieldsetszdy_fieldsets = [(None, {'classes': ('wide', 'extrapretty'),'fields': ('username', 'password', 'if_show_gift_account', 'advertisement_type')})]list_display = ('username', 'nick_name', 'account_type', 'if_show_gift_account', 'advertisement_type')list_filter = ('is_staff', 'is_superuser')#exclude = ('account_person','user_permissions',)def get_queryset(self, request):"""admin 根据不同用户显示表格内容:param request::return:
.        """user_id = request.user.iduserporfile = UserProfile.objects.get(id=user_id)# print(userporfile.account_type)if userporfile.account_type == 'advertiser_agent':qs = super().get_queryset(request)return qs.filter(account_person=user_id)else:return UserProfile.objects.all()def changelist_view(self, request, extra_context=None):"""根据不同用户 显示list_display:param request::param extra_context::return:"""user_id = request.user.iduserporfile = UserProfile.objects.get(id=user_id)# print(userporfile.account_type)if userporfile.account_type != 'advertiser_agent':self.list_display = ['username', 'nick_name','advertisement_type','if_show_gift_account']else:self.list_display = ['username', 'nick_name']return super(UserProfileAdmin, self).changelist_view(request, extra_context=None)def get_readonly_fields(self, request, obj=None):"""设置只读字段:param request::param obj::return:"""if not request.user.is_superuser and request.user.has_perm('users.view_userprofile'):return [f.name for f in self.model._meta.fields]return []# FIXME 继承UserAdmin 重写get_fieldsets 方法指定显示哪些字段def get_fieldsets(self, request, obj=None):"""显示指定字段:param request::param obj::return:"""if request.user.is_superuser:return super(UserAdmin, self).get_fieldsets(request, obj)else:return self.zdy_fieldsets

注册信息

admin.site.register(UserProfile, UserProfileAdmin)

Django admin 继承user表后密码为明文,继承UserAdmin,重写其方法相关推荐

  1. MySQL死锁问题如何分析锁表后查看死锁和去除死锁快速解决方法

    (1) 遇到锁表快速解决办法 依次执行1-6步,运行第6步生成的语句即可. 如果特别着急,运行 1 2 6 步 以及第6步生成的kill语句 即可. 1.  第1步 查看表是否在使用. show op ...

  2. [转载] JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍

    参考链接: 可以重写Java中的私有方法吗 JAVA面向对象之代码块与继承 代码块分类 局部代码块 作用:限制变量生命周期 书写位置:在方法中 构造代码块 开发中很少使用 书写位置:类中  方法外 调 ...

  3. Django解决扩展用户表时,后台Admin显示密码为明文的问题

    小生博客:http://xsboke.blog.51cto.com -------谢谢您的参考,如有疑问,欢迎交流 Django解决当扩展用户表时,用户继承AbstractUser后,后台Admin会 ...

  4. Django admin 创建superuser账号密码

    为什么要使用Django Admin 使用Django Admin可以快速对数据库的各个数据表进行增删查改.一行代码即可增加对一个模型(数据表)的增删查改.试想如果你要自己手动编写后台对一个模型进行增 ...

  5. django admin后台添加用户登陆失败、用户密码明文、修改后台显示内容等

    django项目中,当我们创建了user模型类,并生成了超级管理员,之后我们进入到admin后台页面中,添加一个用户,再去login页面登陆时,会提示我们 用户名或密码错误. 那么问题来了,这是为什么 ...

  6. 【Python】解决Django Admin管理界面样式表(CSS Style)丢失问题

    [Python]解决Django Admin管理界面样式表(CSS Style)丢失问题 参考文章: (1)[Python]解决Django Admin管理界面样式表(CSS Style)丢失问题 ( ...

  7. Django删除数据表后,再重新生成新数据表

    删除数据表后,数据库的Django migrations数据未删除,如果直接命令行调用如下命令,是不会再生成数据表的 Python manager.py makemigrations Python m ...

  8. Django admin修改用户密码

    Django admin修改用户密码 如果忘记了django的admin的密码,而数据库中的auth_user中关于密码的字段是经过加密的,这个时候你就可以通过django的命令来直接修改admin的 ...

  9. 找回django admin密码

    想用下django admin后台更新下数据,突然忘记了密码了 看了下数据库,密码是加密的,所以直接从数据库获得是不可能了 那么就用Django shell: python manage.py she ...

最新文章

  1. 阿里淘系程序员“开源”内部年度技术总结,还把P9大佬喊出来教你“打怪升级”...
  2. linux系统下源码安装mysql5.6数据库
  3. 查看Oracle数据库表空间大小(空闲、已使用),是否要增加表空间的数据文件
  4. 关于计算机的英语作文九年级,实用的九年级英语作文合集6篇
  5. 工作108:精准的v-for和if
  6. android fragment 嵌套,Fragment嵌套Fragment时遇到的那些坑
  7. andriod studio 启动service失败_惊呆了!女儿拿着小天才电话手表,问我Android启动流程!...
  8. rsync(一):基本命令和用法
  9. java war包更新 部署_关于Linux系统下基于Tomcat部署和升级war包的详细过程
  10. 【观点讨论与支撑】科研学习的过程真的是枯燥的乏味的吗?
  11. CI学习 – header和footer
  12. Apache Shiro官方构架文档中文翻译
  13. Flink1.12 文档
  14. Python制作个人动漫头像(简化版)
  15. facebook 注册邮箱
  16. 服务器提示临时文件已满,为什么显示“临时文件夹已满或不能访问”
  17. 为什么《请回答1988》能被称为神剧
  18. 物联网开发笔记(48)- 使用Micropython开发ESP32开发板之控制OLED ssd1306屏幕
  19. 大数据在金融领域主要面临哪些风险,应该怎么解决?
  20. 【算法】时间复杂度/运行时间——大O表示法

热门文章

  1. 容器资源可视化隔离的实现方法
  2. RocketMQ源码解析-PushConsumer(2)
  3. qs.js 更好的处理url参数
  4. Android中Adapter的notifyDataSetInvalidated()和notifyDataSetChanged()的区别
  5. form表单提交数据丢失问题
  6. SOFA RPC 详细介绍
  7. SpringBoot SimpleCacheConfiguration的自动配置原理
  8. 假期把技术书籍和焦虑放一边,我做了几天...
  9. 《Go语言程序设计》读书笔记 (九) 命令工具集
  10. java使用netty