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中的装饰器详解
Apr 13 Python
python选择排序算法实例总结
Jul 01 Python
python 简单的绘图工具turtle使用详解
Jun 21 Python
python通过opencv实现批量剪切图片
Nov 13 Python
Python反射和内置方法重写操作详解
Aug 27 Python
Python3.6简单的操作Mysql数据库的三个实例
Oct 17 Python
Django之模型层多表操作的实现
Jan 08 Python
Python增强赋值和共享引用注意事项小结
May 28 Python
python 协程中的迭代器,生成器原理及应用实例详解
Oct 28 Python
TensorBoard 计算图的查看方式
Feb 15 Python
selenium与xpath之获取指定位置的元素的实现
Jan 26 Python
Python四款GUI图形界面库介绍
Jun 05 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
5.PHP的其他功能
2006/10/09 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
php获取发送给用户的header信息的方法
2015/03/16 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
js继承的这6种方式!(上)
2019/04/23 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
python基于pygame实现响应游戏中事件的方法(附源码)
2015/11/11 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
python3中zip()函数使用详解
2018/06/29 Python
python opencv minAreaRect 生成最小外接矩形的方法
2019/07/01 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
Python Selenium参数配置方法解析
2020/01/19 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
python with语句的原理与用法详解
2020/03/30 Python
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
公司业务员岗位职责
2014/03/18 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
2014年库房工作总结
2014/11/26 职场文书