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实现html转ubb代码(html2ubb)
Jul 03 Python
Python实现partial改变方法默认参数
Aug 18 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
May 31 Python
Python实现将16进制字符串转化为ascii字符的方法分析
Jul 21 Python
numpy linalg模块的具体使用方法
May 26 Python
简单易懂Pytorch实战实例VGG深度网络
Aug 27 Python
python网络编程 使用UDP、TCP协议收发信息详解
Aug 29 Python
如何实现更换Jupyter Notebook内核Python版本
May 18 Python
使用Keras加载含有自定义层或函数的模型操作
Jun 10 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
Jun 18 Python
人工智能深度学习OpenAI baselines的使用方法
May 20 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模拟用户登陆的代码
2010/09/10 PHP
CentOS安装php v8js教程
2015/02/26 PHP
理解php依赖注入和控制反转
2016/05/11 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
javascript使用输出语句实现网页特效代码
2015/08/06 Javascript
JS验证邮件地址格式方法小结
2015/12/01 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
JavaScript每天必学之事件
2016/09/18 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
HTML5 canvas实现的静态循环滚动播放弹幕
2021/01/05 HTML / CSS
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
中专毕业生自我鉴定
2013/11/21 职场文书
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
办公室人员先进事迹
2014/01/27 职场文书
《争吵》教学反思
2014/02/15 职场文书
青春励志演讲稿
2014/04/29 职场文书
党员一帮一活动总结
2014/07/08 职场文书
项目投资合作意向书
2014/07/29 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
三八妇女节慰问信
2015/02/14 职场文书
大学学生个人总结
2015/02/15 职场文书
综合素质评价自我评价
2015/03/06 职场文书
刑事撤诉申请书
2015/05/18 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
python通过函数名调用函数的几种方法总结
2021/06/07 Python