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,登录,身份


猜你喜欢
解决pycharm的Python console不能调试当前程序的问题
2021-09-08 12:02:42
IE下Flash内容刷新后消失问题
2008-01-02 12:38:00
使用Abot中文分词组件来开发ASP站内搜索引擎
2007-10-18 13:36:00
详解python中docx库的安装过程
2023-01-21 18:32:36

Python给定一个句子倒序输出单词以及字母的方法
2022-11-21 00:36:50
通过Python编写一个简单登录功能过程解析
2022-05-18 23:02:51
python-docx如何缩进两个字符
2022-07-04 15:56:45

ubuntu16.04制作vim和python3的开发环境
2022-08-11 00:11:07
Python顺序结构语句详解
2023-05-26 13:19:44
如何愉快地迁移到 Python 3
2021-06-25 19:44:17
详解MySQL中的NULL值
2024-01-14 16:05:00
mysql 主从服务器的简单配置
2009-09-06 12:06:00
mysql 8.0.15 winx64解压版安装配置方法图文教程
2024-01-26 07:11:18

这些CSS Selector,你都熟悉吗?
2008-12-21 16:30:00
基于python 二维数组及画图的实例详解
2021-12-13 08:27:46
Python定时器线程池原理详解
2022-02-10 02:09:07
Python读写及备份oracle数据库操作示例
2024-01-21 17:09:45

JavaScript Reduce使用详解
2024-04-19 10:16:03

ASP存储过程开发应用详解第1/2页
2011-04-07 11:16:00
vue 自定义指令directive的使用场景
2024-05-13 09:09:08
