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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
问题:如何在增加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()
1
2
3
4
5
6
7
8
三 总结
xadmin的文档和资料比较少,这个问题虽然也就三行代码的事情,但是我在百度是没找到解决方案的。

最终是查看xadmin的代码摸索解决的。

那么,应该查看哪部分代码?考虑到这个操作是在保存数据的时候触发的,那么就找xadmin处理保存操作(编辑界面)的代码:

venv\Lib\site-packages\xadmin\views\edit.py
————————————————
版权声明:本文为CSDN博主「yuhan963」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yuhan963/article/details/79187425

原文地址:https://www.cnblogs.com/skbarcode/p/12584312.html

时间: 2024-07-31 10:46:01

Django2集成xadmin详解-5-获取登录用户信息并填充相应Model字段的相关文章

spring-如何优雅的获取登录用户信息

这个问题其实一直比较困扰我. 因为在业务逻辑中经常会使用当前登录用户的一些信息,比如user_id等 而如果使用shiro做登录.权限验证……那么获取用户信息就需要 String username = SecurityUtils.getSubject().getPrincipal(); ……这简直就是蛋疼了……虽然这么用也不是不成 谁有更好的解决办法吗? 原文地址:https://www.cnblogs.com/kalajiadisi/p/11050308.html

利用Application对象存储登录用户信息

Application对象非常适合用于存储一些与整个应用相关数据,例如应用版本,应用登录账户,数据缓存等. 如activity的切换是很频繁的,差不多可以和一个网站中不同网页之间的切换一样,那么不同的activity之间需要存储公共信息(如只有一个当前登录用户)以及数据传递等. 利用Application对象存储登录用户信息的方法,可以很方便的不同activity之间获取登录用户信息. 首先,新建一个java类继承Application类:BaseApplication.java import

安卓集成发布详解(二)gradle

转自:http://frank-zhu.github.io/android/2015/06/15/android-release_app_build_gradle/ 安卓集成发布详解(二) 15 Jun 2015 上一篇主要讲了安卓版本编译版本发布的过程,本篇主要写版本编译脚本的实现,包括签名文件处理及多渠道版本编译.安卓集成发布详解(一) 一.签名部分编写 gradle本身支持直接签名,只需要在releas部分添加如下代码即可 signingConfigs { debug { } releas

【Objective-C】NSDate详解及获取当前时间等常用操作

NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(Time Interval)运算和日期之间的早晚比较等. 1. 创建或初始化可用以下方法 用于创建NSDate实例的类方法有 + (id)date; 返回当前时间 + (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs; 返回以当前时间为基准,然后过了secs秒的时间 + (id)dateWithTimeIntervalSinceReferenceDate:(NSTi

Android 微信登录昵称乱码问题,及获取微信用户信息

微信第三方登录时昵称,username乱码问题解决方法如下: /** * 获取微信用户信息 * @param access_token 调用凭证 * @param openid 普通用户的标识,对当前开发者帐号唯一 * @return */ public static String getWeixinUserinfo(String access_token, String openid){ String URLs = ChildendConstant.WEIXIN_USERINFO;//微信登录

Spring Security应用开发(12) 获取已登录用户信息

1.1. 获取已登录用户信息 在使用Spring Security的应用程序中,可以通过SecurityContext接口获取到已经登录的用户的信息.SecurityContext接口的实例通过SecurityContextHolder的静态方法getContext()获取. 通过SecurityContext可以获取到Authentication接口的实例,而通过Authentication接口可以获取到: principal:主角,通常是一个UserDetails接口的实例,而默认就是Use

Android第三方QQ登录并获取QQ用户信息

首先我们需要去腾讯开放平台申请账号,然后创建应用,地址(http://open.qq.com/) 下载我们应用中所需要的jar包,包括两个 open_sdk_r5509.jar mta_sdk-1.6.2.jar 1.加载完成将jar包放入我们的工程libs目录下 使用eclipse直接设置build path 使用Android studio 需要选中右键 --->add is library 2.做完这步之后我们在AndroidManifest.xml文件中去配置引用 <activity

Magicodes.WeiChat——使用OAuth 2.0获取微信用户信息

使用Magicodes.WeiChat,可以很方便的获取到微信用户的信息.在使用OAuth 2.0之前,你先需要做以下操作: 1)在开发者中心修改[网页授权获取用户基本信息],在弹出的界面输入自己的根域名.比如:weichat.chinacloudsites.cn 如下图所示: 2)配置菜单或者链接(如果使用特性“WeChatOAuth”,本步骤可以略过,这里只是介绍下原理,具体请参考步骤3的说明).Magicodes.WeiChat在控制器WeiChatController中进行处理,配置路径

利用html5的本地存储功能实现登录用户信息保存

在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage,从名字应该可以很清楚的辨认二者的区别,前者是一直存在本地的,后者只是伴随着session,窗口一旦关闭就没了.二者用法完全相同,这里以localStorage为例. 用户名.密码保存,自动登录等,可以通过设置cookie实现,第一次登录网站后在本地计算机的中写入cookie,之后再次登录此网站查看cookie中现有的值,用cookie值进行网站登录即可.但是 cookie 不适合大量数据