全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货  >  Python技术干货  >  详情

django扩展user用户字段inlines方式?

来源:千锋教育
发布人:wjy
2022-11-07

推荐

在线提问>>

  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 '' % (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后可加各种条件查询

注:本文部分文字和图片来源于网络,如有侵权,请联系删除。版权归原作者所有!此页面下方声明无效!

 

相关文章

用Python预测世界杯决赛最后的赢家,没想到准确率还挺高!!

总结了30段极简的Python代码!

20个非常有用的Python单行代码

Python中的可变对象与不可变对象

Python中布尔表达式练习

开班信息 更多>>

课程名称
全部学科
咨询

HTML5大前端

Java分布式开发

Python数据分析

Linux运维+云计算

全栈软件测试

大数据+数据智能

智能物联网+嵌入式

网络安全

全链路UI/UE设计

Unity游戏开发

新媒体短视频直播电商

影视剪辑包装

游戏原画

    在线咨询 免费试学 教程领取