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查询mysql中文乱码问题
Nov 09 Python
简单介绍Ruby中的CGI编程
Apr 10 Python
python学习之编写查询ip程序
Feb 27 Python
利用Python实现命令行版的火车票查看器
Aug 05 Python
python读取二进制mnist实例详解
May 31 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
Python使用django框架实现多人在线匿名聊天的小程序
Nov 29 Python
Python多进程入门、分布式进程数据共享实例详解
Jun 03 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
python3连接kafka模块pykafka生产者简单封装代码
Dec 23 Python
PyCharm2019 安装和配置教程详解附激活码
Jul 31 Python
2021年pycharm的最新安装教程及基本使用图文详解
Apr 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程序61条面向对象分析设计的经验小结
2008/11/12 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
如何让PHP编码更加好看利于阅读
2019/05/12 PHP
jquery remove方法应用详解
2012/11/22 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
微信小程序登录session的使用
2019/03/17 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
Python中的Numpy入门教程
2014/04/26 Python
在Python的web框架中中编写日志列表的教程
2015/04/30 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
python SVM 线性分类模型的实现
2019/07/19 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
感知器基础原理及python实现过程详解
2019/09/30 Python
中国高端家电购物商城:顺电
2018/03/04 全球购物
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
捷科时代的软件测试笔试题
2015/11/09 面试题
财务管理专业应届毕业生求职信
2013/09/22 职场文书
捐款活动总结
2014/08/27 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
文明旅游倡议书
2015/04/28 职场文书
Django REST framework 限流功能的使用
2021/06/24 Python
浅谈MySQL之select优化方案
2021/08/07 MySQL