Django --Xadmin 判断登录者身份实例
作者:飞翔豆皮 时间:2021-08-28 07:59:34
一,为了让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
来源:https://blog.csdn.net/QQ1752506968/article/details/80772699
标签:Django,Xadmin,登录,身份
0
投稿
猜你喜欢
Python判断对象是否相等及eq函数的讲解
2022-04-13 03:15:22
php的RSA加密解密算法原理与用法分析
2023-07-13 11:27:14
Python+OpenCV实现表面缺陷检测
2021-10-17 21:25:21
python break和continue用法对比
2021-11-03 14:36:20
Python实战之实现简单的名片管理系统
2023-07-18 06:48:02
Python判断变量是否已经定义的方法
2023-08-01 07:14:01
跨浏览器实现float:center,No CSS hacks
2008-08-22 12:59:00
python密码学简单替代密码解密及测试教程
2023-09-30 08:13:00
用javascript实现页面无刷新更新数据
2011-08-14 07:54:08
Python数据挖掘Pandas详解
2021-08-04 13:11:44
用CSS实现柱状图(Bar Graph)的方法(二)—基于表格元素的柱状图
2008-05-26 13:23:00
python 获取页面表格数据存放到csv中的方法
2021-01-28 02:13:48
matplotlib绘制甘特图的万能模板案例
2022-07-11 20:24:08
关闭窗口时保存数据的办法
2009-02-19 13:39:00
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2023-08-23 06:29:31
python 除法保留两位小数点的方法
2022-05-09 02:31:22
SQL Server分析服务性能优化浅析
2010-01-16 13:30:00
在python中使用[[v]*n]*n遇到的坑及解决
2022-02-03 10:31:35
如何在pycharm中配置pyqt5设计GUI操作教程
2021-09-28 17:42:21
如何优雅地处理Django中的favicon.ico图标详解
2023-12-03 09:41:36