亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

django 解決擴(kuò)展自帶User表遇到的問題

 更新時(shí)間:2020年05月14日 09:47:24   作者:腫腫的猴子  
這篇文章主要介紹了django 解決擴(kuò)展自帶User表遇到的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

首先要擴(kuò)展自帶的auth_user表我就放個(gè)圖吧,

同時(shí)setting中應(yīng)該設(shè)置:

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

本人的項(xiàng)目需要對此表進(jìn)行擴(kuò)展,再建兩個(gè)子表關(guān)聯(lián)這個(gè)表,關(guān)聯(lián)關(guān)系為一對一:

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

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

直接關(guān)聯(lián)肯定會(huì)報(bào)錯(cuò),此時(shí)加入上面兩段代碼,

第一個(gè)是引入 setting

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

此時(shí)再次遷移應(yīng)該就能成功了,

能夠遷移成功但是還會(huì)有問題。

我后面的功能代碼中原先寫的有用到;User這個(gè)表的地方,代碼運(yùn)行到這里就會(huì)出錯(cuò)。

報(bào)錯(cuò)信息如下

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

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

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

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

補(bǔ)充知識(shí):Python+ django + pycharm項(xiàng)目之?dāng)U展默認(rèn)user表

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

在django項(xiàng)目中,所有的數(shù)據(jù)庫表都是根據(jù)各APP的模型來生成的,我們創(chuàng)建項(xiàng)目后第一件事就是要去完善user表,這個(gè)利用的知識(shí)點(diǎn)就是Python類的繼承,假如,我要?jiǎng)?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中是如何來識(shí)別你創(chuàng)建的APP呢,查看各APP的apps,py文件

文件中的name=‘users'代表著django可以識(shí)別該名稱為這個(gè)APP的名稱,于是就可以在settings.py文件中進(jìn)行注冊APP了:

還需要配置一個(gè)參數(shù):AUTH_USER_MODEL = 'users.UserProfile'

最后遷移數(shù)據(jù)庫,使用makemigrations 和 migrate 就可以完成user表的擴(kuò)展了,刷新數(shù)據(jù)庫,表是不是已經(jīng)生成了0.0

以上這篇django 解決擴(kuò)展自帶User表遇到的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python的randrange()方法使用教程

    Python的randrange()方法使用教程

    這篇文章主要介紹了Python的randrange()方法使用教程,是Python學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • python3安裝speech語音模塊的方法

    python3安裝speech語音模塊的方法

    今天小編就為大家分享一篇python3安裝speech語音模塊的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python發(fā)送郵件封裝實(shí)現(xiàn)過程詳解

    Python發(fā)送郵件封裝實(shí)現(xiàn)過程詳解

    這篇文章主要介紹了Python發(fā)送郵件封裝實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python 50行爬蟲抓取并處理圖靈書目過程詳解

    Python 50行爬蟲抓取并處理圖靈書目過程詳解

    這篇文章主要介紹了Python 50行爬蟲抓取并處理圖靈書目過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python通過對字典的排序,對json字段進(jìn)行排序的實(shí)例

    python通過對字典的排序,對json字段進(jìn)行排序的實(shí)例

    今天小編就為大家分享一篇python通過對字典的排序,對json字段進(jìn)行排序的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • pandas讀取excel統(tǒng)計(jì)空值數(shù)量錯(cuò)誤的解決方法

    pandas讀取excel統(tǒng)計(jì)空值數(shù)量錯(cuò)誤的解決方法

    pd.read_excel()讀取excel數(shù)據(jù)后,用pd.isnull().sum()統(tǒng)計(jì)空值數(shù)量不對,本文主要介紹了pandas讀取excel統(tǒng)計(jì)空值數(shù)量錯(cuò)誤的解決方法,感興趣的可以了解一下
    2024-04-04
  • Python中用表格格式打印列表的兩種實(shí)現(xiàn)

    Python中用表格格式打印列表的兩種實(shí)現(xiàn)

    本文將詳細(xì)介紹如何在 Python 中以表格格式打印列表,以便更好地展示和呈現(xiàn)數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Numpy中vstack()和hstack()的使用方式

    Numpy中vstack()和hstack()的使用方式

    文章詳細(xì)介紹了Numpy中vstack()和hstack()兩種數(shù)組拼接方法,vstack()是垂直堆疊數(shù)組,需保證除第一軸(行)外,數(shù)組形狀相同,hstack()是按順序堆疊數(shù)組,需保證除第二軸(列)外,數(shù)組形狀相同,兩者都可通過堆疊給定數(shù)組最后形成至少二維的數(shù)組
    2024-10-10
  • Python使用flask作為web服務(wù)器的代碼實(shí)現(xiàn)

    Python使用flask作為web服務(wù)器的代碼實(shí)現(xiàn)

    Python Flask 框架是一個(gè)輕量級(jí)的 Web 框架,它簡單易用,靈活多變,非常適合用于構(gòu)建小型到中型規(guī)模的 Web 應(yīng)用程序,本文給大家介紹了Python使用flask作為web服務(wù)器的代碼實(shí)現(xiàn),需要的朋友可以參考下
    2024-06-06
  • Python入門教程(十一)Python中的運(yùn)算符

    Python入門教程(十一)Python中的運(yùn)算符

    這篇文章主要介紹了Python入門教程(十一)Python中的運(yùn)算符,Python是一門非常強(qiáng)大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04

最新評(píng)論