Django --Xadmin 判断登录者身份实例


Posted in Python onJuly 03, 2020

一,为了让xadmin 登录者只能看到自己创建的数据

1,model

class UserTB(models.Model):
  name=models.CharField('姓名',max_length=30,blank=True,null=True)
  email=models.CharField('邮箱',max_length=200,blank=True,null=True)
  integral = models.IntegerField('积分', default=0)
  create_time=models.DateTimeField('创建时间',auto_now_add=True)
  user = models.OneToOneField(User,blank=True,null=True) #
  def __unicode__(self):
    return self.name
  class Meta:
    verbose_name='员工管理'
    verbose_name_plural='员工管理'
class UnitPage(models.Model):
  title=models.Charfield('标题',max_length=50)
  uploader=models.ForeignKey(UserTB,verbose_name='创建者',related_name='deuser',blank=True,null=True,on_delete=models.SET_NULL)
  create_time=models.DateTimeField('创建时间',auto_now_add=True)
  def __unicode__(self):
    return self.title
  class Meta:
    verbose_name='文章管理'
    verbose_name_plural='文章管理'

2,adminx

class ProdeUnitDisplay(object):
  list_display=['title','create_time'] #需要显示字段
  search_fields=['title',] #可搜索的字段
  def queryset(self):
    if not self.request.user.is_superuser: #判断是否是超级用户
      st = UserTB.objects.get(user=self.request.user) #找到用户表里对应的用户
      print 'st:',st
      sr = self.model.objects.filter(uploader=st) #找到该model 里该用户创建的数据
      return sr
 
    return self.model.objects.all()
xadmin.site.register(UnitPage,ProdeUnitDisplay)

补充知识:Django2集成xadmin详解-5-获取登录用户信息并填充相应Model字段

一 场景问题

继续使用IDC Model,在此Model增加user字段,用于记录添加当前数据的用户:

class IDC(models.Model):
  user = models.ForeignKey(User, on_delete=models.CASCADE, editable=False, null=True) # 记录创建该数据的用户
  name = models.CharField(max_length=64)
  contact = models.CharField(max_length=32)
  phone = models.CharField(max_length=32)
  address = models.CharField(max_length=128)
  create_time = models.DateField(auto_now=True)

  def __str__(self):
    return self.name

  class Meta:
    verbose_name = "IDC机房"
    verbose_name_plural = verbose_name

问题:如何在增加IDC数据的时候,获取当前登录的用户信息,并保存到user字段里?

二 解决方法

打开IdcManager目录的adminx.py,在IDCAdmin类里增加save_models方法,代码如下:

@xadmin.sites.register(IDC)
class IDCAdmin(object):
  list_display = ("user", "name", "contact", "phone", "address", "create_time")
  list_display_links = ("name",)

  def save_models(self):
    self.new_obj.user = self.request.user
    super().save_models()

三 总结

xadmin的文档和资料比较少,这个问题虽然也就三行代码的事情,但是我在百度是没找到解决方案的。

最终是查看xadmin的代码摸索解决的。

那么,应该查看哪部分代码?考虑到这个操作是在保存数据的时候触发的,那么就找xadmin处理保存操作(编辑界面)的代码:

venv\Lib\site-packages\xadmin\views\edit.py

以上这篇Django --Xadmin 判断登录者身份实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
从零学python系列之从文件读取和保存数据
May 23 Python
Python实现微信公众平台自定义菜单实例
Mar 20 Python
各个系统下的Python解释器相关安装方法
Oct 12 Python
TensorFlow实现非线性支持向量机的实现方法
Apr 28 Python
python+pandas分析nginx日志的实例
Apr 28 Python
完美解决安装完tensorflow后pip无法使用的问题
Jun 11 Python
78行Python代码实现现微信撤回消息功能
Jul 26 Python
python3 线性回归验证方法
Jul 09 Python
pandas中read_csv的缺失值处理方式
Dec 19 Python
keras获得某一层或者某层权重的输出实例
Jan 24 Python
CentOS 7如何实现定时执行python脚本
Jun 24 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
详解Python多线程下的list
Jul 03 #Python
Python 字符串池化的前提
Jul 03 #Python
Pycharm打开已有项目配置python环境的方法
Jul 03 #Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
Jul 03 #Python
windows支持哪个版本的python
Jul 03 #Python
Django Form设置文本框为readonly操作
Jul 03 #Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
Jul 03 #Python
You might like
php strrpos()与strripos()函数
2013/08/31 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
2015/08/10 Javascript
Nginx上传文件全部缓存解决方案
2015/08/17 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
2015/10/23 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
canvas实现手机端用来上传用户头像的代码
2016/10/20 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
[01:12]快闪回顾DOTA2亚洲邀请赛(DAC) 静候2018新征程开启
2018/03/11 DOTA
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
Python中常用的os操作汇总
2020/11/05 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
德国最大的服装、鞋子和配件在线商店之一:Outfits24
2019/07/23 全球购物
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
高三自我鉴定范文
2013/10/19 职场文书
机关作风建设心得体会
2014/10/22 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
小学教师教育随笔
2015/08/14 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android
Python何绘制带有背景色块的折线图
2022/04/23 Python