django 扩展user用户字段inlines方式


Posted in Python onMarch 30, 2020

model:

class Profile(models.Model):
 user = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name='昵称')
 nickname = models.CharField(max_length=20)
 
 def __str__(self):
  return '<Profile: %s for %s>' % (self.nickname, self.user.username)

admin.py

from django.contrib import admin
from django.contrib.auth.models import User
from .models import Profile
 
 
class ProfileInline(admin.StackedInline): #将Profile加入到Admin的user表中,内联
 model = Profile
 can_delete = False
 
class UserAdmin(admin.ModelAdmin):
 inlines = [ProfileInline]
 list_display = ('username', 'nickname', 'email', 'is_staff', 'is_active', 'is_superuser')
 
 def nickname(self, obj):
  return obj.profile.nickname #自定义字段显示信息
 
 nickname.short_description = '昵称'
 
# Re-register UserAdmin
admin.site.unregister(User) #去掉在admin中的注册
admin.site.register(User, UserAdmin) #用UserAdmin注册user

补充知识:Django model onetoonefield的工作模式

onetonoefield,就是一对一机制,每一条信息对应其他关联表的一条信息,记录标识为信息的id,且该键为主键

用法:

1、取值

例:User为Django自带User表,需要关联详细信息表,类为UserBaseMsg(表名为user_base_msg)和另外一张表的员工状态信息,类为UserWorkMsg(表名为user_work_msg),且在关联表中的值为user

如果取详细信息表重的a字段的值和工作信息表中的b字段

user = User.objects.get(***)

a = user.userbasemsg.a

b = user.userworkmsg.b

筛选a = c的User信息

user = User.objects.get(UserBaseMsg__a=c)

此处get还可以换成filter、exclude等条件

在UserBaseMsg__a后可加各种条件查询

常用的有

__in = # 所筛选的条件在给的范围内

__gt = # 筛选的大于指定的值

__gte = # 筛选的大于等于指定的值

__lt = # 筛选的值小于指定的值

__lte = # 筛选的值小于等于指定的值

以上这篇django 扩展user用户字段inlines方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python网络编程之读取网站根目录实例
Sep 30 Python
Python列出一个文件夹及其子目录的所有文件
Jun 30 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 Python
Python中函数eval和ast.literal_eval的区别详解
Aug 10 Python
python使用Tesseract库识别验证
Mar 21 Python
Python应用库大全总结
May 30 Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
Feb 29 Python
.img/.hdr格式转.nii格式的操作
Jul 01 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
Python3标准库之threading进程中管理并发操作方法
Mar 30 #Python
解决django xadmin主题不显示和只显示bootstrap2的问题
Mar 30 #Python
Python2 与Python3的版本区别实例分析
Mar 30 #Python
django xadmin中form_layout添加字段显示方式
Mar 30 #Python
基于virtualenv创建python虚拟环境过程图解
Mar 30 #Python
Python实现RabbitMQ6种消息模型的示例代码
Mar 30 #Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 #Python
You might like
FCKeditor添加自定义按钮
2008/03/27 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
2016/12/21 PHP
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
2007/09/04 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
Vue中遍历数组的新方法实例详解
2019/07/21 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
TensorFlow实现RNN循环神经网络
2018/02/28 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
如何一键升级Python所有包
2020/11/05 Python
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
心理学专业求职信
2014/06/16 职场文书
园林专业毕业生自荐信
2014/07/04 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
《1942》观后感
2015/06/08 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis
Python实现双向链表
2022/05/25 Python