色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

django 解決擴展自帶User表遇到的問題

瀏覽:122日期:2024-10-07 13:41:34

首先要擴展自帶的auth_user表我就放個圖吧,

django 解決擴展自帶User表遇到的問題

同時setting中應該設置:

# 此處重載是為了使UserProfile生效AUTH_USER_MODEL = 'EcdsApp.UserProfile'

本人的項目需要對此表進行擴展,再建兩個子表關聯(lián)這個表,關聯(lián)關系為一對一:

修改完成之后進行子表關聯(lián):

from django.contrib.auth.models import AbstractUser, Userfrom django.conf import settingsclass UserInfo(models.Model): user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

直接關聯(lián)肯定會報錯,此時加入上面兩段代碼,

第一個是引入 setting

第二個是在關聯(lián)字段哪里將原有的User 更換為setting.AUTH_USER_MODEL

此時再次遷移應該就能成功了,

能夠遷移成功但是還會有問題。

我后面的功能代碼中原先寫的有用到;User這個表的地方,代碼運行到這里就會出錯。

報錯信息如下

AttributeError: Manager isn’t available; ’auth.User’ has been swapped for ’EcdsApp.UserProfile’

原因是原User表已經發(fā)生改變這里也需要變動一下:

from django.contrib.auth import get_user_modelUser = get_user_model()

直接將這兩行加入到你所有使用到原User表的py文件中,基本問題就可以解決!

補充知識:Python+ django + pycharm項目之擴展默認user表

django為我們提供了默認的user表,但是在實際的開發(fā)項目的基本是不滿足實際情況的,所以呢學習web知識,擴展默認user表是必不可少的一部分,雖然很簡單,但是呢還是在此來加深下自己的記憶。

在django項目中,所有的數據庫表都是根據各APP的模型來生成的,我們創(chuàng)建項目后第一件事就是要去完善user表,這個利用的知識點就是Python類的繼承,假如,我要創(chuàng)建UserProfile類來繼承原來的AbstractUser類,從而繼承原來user表的字段,又可以增加自己需要的字段:

在users 用戶app的models.py做如下的修改:

from django.db import models from django.contrib.auth.models import AbstractUser # 引入原來的Abstract類 # 創(chuàng)建新的類來繼承原來的類,并拓展自己的字段class UserProfile(AbstractUser): nick_name = models.CharField(max_length=20, verbose_name=’昵稱’) birthday = models.DateField(verbose_name=’生日’, null=True, blank=True) gender = models.CharField(choices=((’male’, ’男’), (’female’, ’女’)), verbose_name=’性別’, default=’feamale’, max_length=10) address = models.CharField(max_length=50, verbose_name=’地址’, default=’’) mobile = models.CharField(max_length=11, verbose_name=’聯(lián)系電話’, null=True, blank=True) image = models.ImageField(upload_to=’image/%Y/%m’, default=’image/default.png’, max_length=100) class Meta: verbose_name = ’用戶信息’ verbose_name_plural = verbose_name def __str__(self): return self.username

修改了models.py中代碼后,需要注冊你創(chuàng)建的app,django中是如何來識別你創(chuàng)建的APP呢,查看各APP的apps,py文件

django 解決擴展自帶User表遇到的問題

文件中的name=‘users’代表著django可以識別該名稱為這個APP的名稱,于是就可以在settings.py文件中進行注冊APP了:

django 解決擴展自帶User表遇到的問題

還需要配置一個參數:AUTH_USER_MODEL = ’users.UserProfile’

django 解決擴展自帶User表遇到的問題

最后遷移數據庫,使用makemigrations 和 migrate 就可以完成user表的擴展了,刷新數據庫,表是不是已經生成了0.0

以上這篇django 解決擴展自帶User表遇到的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
主站蜘蛛池模板: 久久99热只有视精品6国产 | 97香蕉久久夜色精品国产 | 日韩视频专区 | 国产美女在线精品观看 | 欧美精品久久 | 欧美视频综合 | 成 人 黄 色 激 情视频网站 | 日韩在线视频不卡一区二区三区 | 日本女人www | 久久毛片免费看一区二区三区 | 久久er国产精品免费观看1 | 国产高清在线精品一区在线 | 92国产福利久久青青草原 | av成人天堂| 欧美色xxxx| 黄色国产在线观看 | 日韩欧美视频一区二区在线观看 | 国产一区二区福利久久 | 国产精品美女视视频专区 | 亚洲狠狠ady亚洲精品大秀 | 国产九区| 亚洲国产二区三区久久 | 欧美三级观看 | 日韩毛片欧美一级国产毛片 | 特级毛片8级毛片免费观看 特级毛片免费观看视频 | 一级毛片一级毛片一级毛片 | 日韩欧美在线综合网高清 | 国产v欧美v日韩在线观看 | 国产成在线观看免费视频成本人 | aaa一级毛片免费 | 国产情侣自拍网站 | 香港黄页亚洲一级 | 久久免费福利 | a级毛片在线视频免费观看 a级免费 | 高清国产美女一级a毛片 | 亚洲精品久久99久久一区 | 中文字幕 亚洲精品 第1页 | 久久在线 | 欧美成人三级视频 | 亚欧美图片自偷自拍另类 | 一级做a爰片久久毛片 |