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中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
Python实现删除列表中满足一定条件的元素示例
Jun 12 Python
简单的python协同过滤程序实例代码
Jan 31 Python
深入解析Python小白学习【操作列表】
Mar 23 Python
Django 框架模型操作入门教程
Nov 05 Python
python的range和linspace使用详解
Nov 27 Python
Python实现分数序列求和
Feb 25 Python
Jupyter 无法下载文件夹如何实现曲线救国
Apr 22 Python
简单了解python shutil模块原理及使用方法
Apr 28 Python
Python中socket网络通信是干嘛的
May 27 Python
python如何随机生成高强度密码
Aug 19 Python
python自动化测试之Selenium详解
Mar 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
PHP 变量的定义方法
2010/01/26 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
vue中如何使用ztree
2018/02/06 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
Vue 数据绑定的原理分析
2020/11/16 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
Python中字典的setdefault()方法教程
2017/02/07 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
Python 如何创建一个线程池
2020/07/28 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
彼得罗夫美国官网:Peter Thomas Roth美国(青瓜面膜)
2017/11/05 全球购物
经济学人订阅:The Economist
2018/07/19 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
JVM是一个编译程序还是解释程序
2012/09/11 面试题
结对共建协议书
2014/08/20 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js
vue实现登陆页面开发实践
2022/05/30 Vue.js