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的pymysql模块详解
Sep 13 Python
python itchat实现微信好友头像拼接图的示例代码
Aug 14 Python
Python中scatter函数参数及用法详解
Nov 08 Python
Python引用计数操作示例
Aug 23 Python
浅谈Python大神都是这样处理XML文件的
May 31 Python
利用selenium爬虫抓取数据的基础教程
Jun 10 Python
Python Django的安装配置教程图文详解
Jul 17 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
Python 如何创建一个简单的REST接口
Jul 30 Python
python修改微信和支付宝步数的示例代码
Oct 12 Python
Python爬虫之Selenium下拉框处理的实现
Dec 04 Python
python生成随机数、随机字符、随机字符串
Apr 06 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
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
php对二维数组进行排序的简单实例
2013/12/19 PHP
PHP中的socket_read和socket_recv区别详解
2015/02/09 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
img的onload的另类用法
2008/01/10 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
Node.js实现简单聊天服务器
2014/06/20 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
JavaScript实现图片拖曳效果
2017/09/08 Javascript
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
Python 绘图和可视化详细介绍
2017/02/11 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
数控专业个人求职信范例
2013/11/29 职场文书
医务工作者先进事迹材料
2014/01/26 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
施工协议书范本
2014/04/22 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
三人合伙协议书范本
2014/10/29 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书
篮球比赛通讯稿
2015/07/18 职场文书