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的Flask框架中web表单的教程
Apr 20 Python
python计算牛顿迭代多项式实例分析
May 07 Python
Django框架下在URLconf中指定视图缓存的方法
Jul 23 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
May 29 Python
Python退火算法在高次方程的应用
Jul 26 Python
Python中的延迟绑定原理详解
Oct 11 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
详解Python的三种拷贝方式
Feb 11 Python
解决django中form表单设置action后无法回到原页面的问题
Mar 13 Python
在Django中使用MQTT的方法
May 10 Python
pandas提升计算效率的一些方法汇总
May 30 Python
python文件与路径操作神器 pathlib
Apr 01 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(三)
2012/03/22 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
js模拟类继承小例子
2010/07/17 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
js实现上传文件添加和删除文件选择框
2016/10/24 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
vue实现点击图片放大效果
2017/08/15 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
在Django下测试与调试REST API的方法详解
2019/08/29 Python
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
幼教简历自我评价
2014/01/28 职场文书
残疾人小组计划书
2014/04/27 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
九九重阳节标语
2014/10/07 职场文书
2014年收银工作总结
2014/11/13 职场文书
产品质量保证书范本
2015/02/27 职场文书
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL