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中使用装饰器和元编程实现结构体类实例
Jan 28 Python
python fabric使用笔记
May 09 Python
Python实现优先级队列结构的方法详解
Jun 02 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
Jun 07 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
Python模拟简单电梯调度算法示例
Aug 20 Python
python用quad、dblquad实现一维二维积分的实例详解
Nov 20 Python
python实现拼图小游戏
Feb 22 Python
python 中的paramiko模块简介及安装过程
Feb 29 Python
使用Pytorch搭建模型的步骤
Nov 16 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
Feb 16 Python
Python max函数中key的用法及原理解析
Jun 26 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来自动调用不同服务器上的flash
2006/10/09 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
2016/05/21 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
vue项目中api接口管理总结
2018/04/20 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
Python实现字典依据value排序
2016/02/24 Python
Python 多线程抓取图片效率对比
2016/02/27 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
wxPython之解决闪烁的问题
2018/01/15 Python
机器学习之KNN算法原理及Python实现方法详解
2018/07/09 Python
python获取本机所有IP地址的方法
2018/12/26 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
在django中使用post方法时,需要增加csrftoken的例子
2020/03/13 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
毕业生就业自荐书
2013/12/15 职场文书
我为自己代言广告词
2014/03/18 职场文书
学习礼仪心得体会
2014/09/01 职场文书
教师个人查摆剖析材料
2014/10/14 职场文书
财务会计实训报告
2014/11/05 职场文书
2015毕业实习推荐信
2015/03/23 职场文书
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL