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 import自定义模块方法
Feb 12 Python
Python验证企业工商注册码
Oct 25 Python
实例讲解Python中global语句下全局变量的值的修改
Jun 16 Python
神经网络理论基础及Python实现详解
Dec 15 Python
基于python 处理中文路径的终极解决方法
Apr 12 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
详解Django解决ajax跨域访问问题
Aug 24 Python
使用pyqt5 tablewidget 单元格设置正则表达式
Dec 13 Python
Python猜数字算法题详解
Mar 01 Python
python 利用panda 实现列联表(交叉表)
Feb 06 Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
Apr 12 Python
Python中非常使用的6种基本变量的操作与技巧
Mar 22 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
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
2012/07/02 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
JS模拟多线程
2007/02/07 Javascript
function, new function, new Function之间的区别
2007/03/08 Javascript
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
[01:08:33]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
用Python给文本创立向量空间模型的教程
2015/04/23 Python
总结python中pass的作用
2019/02/27 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
优秀班组长事迹
2014/05/31 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
调研座谈会发言材料
2014/08/23 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
给客户的检讨书
2014/12/21 职场文书
遗嘱格式范本
2015/08/07 职场文书
python四种出行路线规划的实现
2021/06/23 Python