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的collections模块中的OrderedDict有序字典
Jul 07 Python
python+requests+unittest API接口测试实例(详解)
Jun 10 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
django缓存配置的几种方法详解
Jul 16 Python
Numpy截取指定范围内的数据方法
Nov 14 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
python plotly绘制直方图实例详解
Jul 22 Python
face++与python实现人脸识别签到(考勤)功能
Aug 28 Python
Python pandas库中的isnull()详解
Dec 26 Python
python获取依赖包和安装依赖包教程
Feb 13 Python
python基础之停用词过滤详解
Apr 21 Python
详解运行Python的神器Jupyter Notebook
Jun 03 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下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
javascript中call()、apply()的区别
2019/03/21 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
遍历python字典几种方法总结(推荐)
2016/09/11 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
党校学习自我鉴定
2014/02/24 职场文书
合作意向书格式及范文
2014/03/31 职场文书
无传销社区工作方案
2014/05/13 职场文书
大学迎新标语
2014/06/26 职场文书
公司授权委托书范本
2014/09/18 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
元旦晚会开场白
2015/05/29 职场文书
小爸爸观后感
2015/06/15 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
Python基础之tkinter图形化界面学习
2021/04/29 Python