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 用户登录验证的小例子
Mar 06 Python
Python-基础-入门 简介
Aug 09 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
Mar 20 Python
python切片及sys.argv[]用法详解
May 25 Python
Python使用folium excel绘制point
Jan 03 Python
Python之循环结构
Jan 15 Python
Python中一般处理中文的几种方法
Mar 06 Python
python运用pygame库实现双人弹球小游戏
Nov 25 Python
Python Selenium截图功能实现代码
Apr 26 Python
Python实现ElGamal加密算法的示例代码
Jun 19 Python
解决python3中os.popen()出错的问题
Nov 19 Python
python 开心网和豆瓣日记爬取的小爬虫
May 29 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入门源程序
2006/10/09 PHP
利用 window_onload 实现select默认选择
2006/10/09 PHP
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
vue搜索和vue模糊搜索代码实例
2019/05/07 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
Python爬虫爬验证码实现功能详解
2016/04/14 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
Python实现字典去除重复的方法示例
2017/07/31 Python
Python shelve模块实现解析
2019/08/28 Python
基于python操作ES实例详解
2019/11/16 Python
Python通过format函数格式化显示值
2020/10/17 Python
css3实现二维码扫描特效的示例
2020/10/29 HTML / CSS
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
什么是servlet
2012/05/08 面试题
我爱我校演讲稿
2014/05/21 职场文书
中层干部培训方案
2014/06/16 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
请客吃饭开场白
2015/06/01 职场文书
外科护士长工作总结
2015/08/12 职场文书
党员干部学习心得体会
2016/01/23 职场文书
ant design charts 获取后端接口数据展示
2022/05/25 Javascript
WinServer2012搭建DNS服务器的方法步骤
2022/06/10 Servers
MySQL常用慢查询分析工具详解
2022/08/14 MySQL