django 擴(kuò)展user用戶(hù)字段inlines方式
model:
class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name='昵稱(chēng)') 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表中,內(nèi)聯(lián) 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 = '昵稱(chēng)' # Re-register UserAdmin admin.site.unregister(User) #去掉在admin中的注冊(cè) admin.site.register(User, UserAdmin) #用UserAdmin注冊(cè)u(píng)ser
補(bǔ)充知識(shí):Django model onetoonefield的工作模式
onetonoefield,就是一對(duì)一機(jī)制,每一條信息對(duì)應(yīng)其他關(guān)聯(lián)表的一條信息,記錄標(biāo)識(shí)為信息的id,且該鍵為主鍵
用法:
1、取值
例:User為Django自帶User表,需要關(guān)聯(lián)詳細(xì)信息表,類(lèi)為UserBaseMsg(表名為user_base_msg)和另外一張表的員工狀態(tài)信息,類(lèi)為UserWorkMsg(表名為user_work_msg),且在關(guān)聯(lián)表中的值為user
如果取詳細(xì)信息表重的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后可加各種條件查詢(xún)
常用的有
__in = # 所篩選的條件在給的范圍內(nèi)
__gt = # 篩選的大于指定的值
__gte = # 篩選的大于等于指定的值
__lt = # 篩選的值小于指定的值
__lte = # 篩選的值小于等于指定的值
以上這篇django 擴(kuò)展user用戶(hù)字段inlines方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決pycharm 工具欄Tool中找不到Run manager.py Task的問(wèn)題
今天小編就為大家分享一篇解決pycharm 工具欄Tool中找不到Run manager.py Task的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07Python 實(shí)戰(zhàn)開(kāi)發(fā)校園管理系統(tǒng)詳細(xì)流程
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python開(kāi)發(fā)一套校園管理系統(tǒng),包含各種人員,如教師、學(xué)生等。學(xué)校的系統(tǒng)通常還包括一些課程的信息,大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-10-10在Python中使用Protocol?Buffers的詳細(xì)介紹
本文詳細(xì)介紹了協(xié)議緩沖區(qū)(Protocol Buffers)在Python中的應(yīng)用,包括其定義、序列化和解析過(guò)程,協(xié)議緩沖區(qū)是一種靈活且高效的自動(dòng)化解決方案,本文包括了如何將地址簿應(yīng)用程序的個(gè)人詳細(xì)信息寫(xiě)入文件的示例代碼,并提供了相應(yīng)的下載和安裝指導(dǎo),感興趣的朋友一起看看吧2024-10-10python K近鄰算法的kd樹(shù)實(shí)現(xiàn)
這篇文章主要介紹了python K近鄰算法的kd樹(shù)實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09使用python實(shí)現(xiàn)時(shí)間序列白噪聲檢驗(yàn)方式
這篇文章主要介紹了使用python實(shí)現(xiàn)時(shí)間序列白噪聲檢驗(yàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06完美解決matplotlib子圖坐標(biāo)軸重疊問(wèn)題
這篇文章主要介紹了完美解決matplotlib子圖坐標(biāo)軸重疊問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04