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中yield生成器的用法
Aug 05 Python
Python发送form-data请求及拼接form-data内容的方法
Mar 05 Python
Python实现基本线性数据结构
Aug 22 Python
django主动抛出403异常的方法详解
Jan 04 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
Apr 01 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
python3实现的zip格式压缩文件夹操作示例
Aug 17 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 Python
基于Python的Jenkins的二次开发操作
May 12 Python
python 实现批量图片识别并翻译
Nov 02 Python
pandas按照列的值排序(某一列或者多列)
Dec 13 Python
python安装mysql的依赖包mysql-python操作
Jan 01 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
使用laravel的migrate创建数据表的方法
2019/09/30 PHP
改写一个简单的菜单 弹性大小
2010/12/02 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
通过location.replace禁止浏览器后退防止重复提交
2014/09/04 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
浅析Proxy可以优化vue的数据监听机制问题及实现思路
2018/11/29 Javascript
Vue解析带html标签的字符串为dom的实例
2019/11/13 Javascript
vue.config.js常用配置详解
2019/11/14 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
Python线程指南详细介绍
2017/01/05 Python
不要用强制方法杀掉python线程
2017/02/26 Python
浅谈scrapy 的基本命令介绍
2017/06/13 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
Python3 修改默认环境的方法
2019/02/16 Python
Python实现钉钉订阅消息功能
2020/01/14 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
如何利用find命令查找文件
2015/02/07 面试题
硕士研究生自我鉴定范文
2013/12/27 职场文书
竞聘上岗演讲稿范文
2014/01/10 职场文书
自我鉴定三原则
2014/01/13 职场文书
大学生创业策划书
2014/02/02 职场文书
公司管理建议书范文
2014/03/12 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
导游词欢迎词
2015/02/02 职场文书