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语言的优雅之处
Jul 04 Python
windows下ipython的安装与使用详解
Oct 20 Python
Python使用openpyxl读写excel文件的方法
Jun 30 Python
浅谈python import引入不同路径下的模块
Jul 11 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
May 07 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
Jul 19 Python
python获取地震信息 微信实时推送
Jun 18 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
python常用排序算法的实现代码
Nov 08 Python
python 线性回归分析模型检验标准--拟合优度详解
Feb 24 Python
Python中logging日志记录到文件及自动分割的操作代码
Aug 05 Python
Python运算符+与+=的方法实例
Feb 18 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
高分R级DC动画剧《哈莉·奎茵》第二季正式预告首发
2020/04/09 欧美动漫
php不用正则采集速度探究总结
2008/03/24 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
Smarty使用自定义资源的方法
2015/08/08 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
基于JQuery的模拟苹果桌面Dock效果(稳定版)
2012/10/15 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
js获取页面description的方法
2015/05/21 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
jQuery的框架介绍
2016/05/11 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
JavaScript & jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
Vue中的v-cloak使用解读
2017/03/27 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
详解python:time模块用法
2019/03/25 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
详解HTML5中download属性的应用
2015/08/06 HTML / CSS
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
学校岗位设置方案
2014/01/16 职场文书
医生进修自我鉴定
2014/01/19 职场文书
采购求职信
2014/03/17 职场文书
职称评定自我鉴定
2014/03/18 职场文书
《悯农》教学反思
2014/04/28 职场文书
应届硕士毕业生自荐信
2014/05/26 职场文书