千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:北京千锋IT培训  >  技术干货  >  Python技术干货  > django扩展user用户字段inlines方式?

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

来源:千锋教育
发布人:wjy
时间: 2022-11-07 10:23:24

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

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

 

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

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

2023-01-07

Python模式匹配与正则表达式

2022-11-07

python基础-面向对象编程

2022-11-07

最新文章NEW

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

2023-01-07

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

2022-11-15

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

2022-11-14

相关推荐HOT

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>