最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用django自帶的user做外鍵的方法

 更新時(shí)間:2020年11月30日 10:42:01   作者:湯圓兒2019  
這篇文章主要介紹了使用django自帶的user做外鍵的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、使用django自帶的user做外鍵,可以直接在model中使用。只需導(dǎo)入settings模塊

使用方法:
在app應(yīng)用(此處是Product應(yīng)用)中的models.py文件,導(dǎo)入settings模塊

# Product / models.py
from django.db import models
from django.contrib.auth import settings


class Product(models.Model):
  productName = models.CharField('產(chǎn)品名稱', max_length=20)
  productDescription = models.CharField('產(chǎn)品描述', max_length=100)
  producer = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='負(fù)責(zé)人',             on_delete=models.SET_NULL,blank=True, null=True)
  createTime = models.DateTimeField('創(chuàng)建時(shí)間', auto_now=True)

  class Meta:
    verbose_name = '產(chǎn)品管理'
    verbose_name_plural = '產(chǎn)品管理'

  def __str__(self):
    return self.productName

在這里插入圖片描述

二、自定義User Model

方法一、擴(kuò)展AbstractUser類:只增加字段

app/models.py

from django.contrib.auth.models import AbstractUser
from django.db import models

class NewUser(AbstractUser):
	new_field = models.CharField(max_length=100)

同時(shí),需要在global_settings文件中設(shè)置:

AUTH_USER_MODEL = "app.NewUser"

方法二、擴(kuò)展AbstractBaseUser類
AbstractBaseUser中只包含3個(gè)field: password, last_login和is_active. 擴(kuò)展方式同上

# django.contrib.auth.base_user
class AbstractBaseUser(models.Model):
  password = models.CharField(_('password'), max_length=128)
  last_login = models.DateTimeField(_('last login'), blank=True, null=True)

  is_active = True

  REQUIRED_FIELDS = []

  # Stores the raw password if set_password() is called so that it can
  # be passed to password_changed() after the model is saved.
  _password = None

  class Meta:
    abstract = True

  def __str__(self):
    return self.get_username()

  def save(self, *args, **kwargs):
    super().save(*args, **kwargs)
    if self._password is not None:
      password_validation.password_changed(self._password, self)
      self._password = None

  def get_username(self):
    """Return the username for this User."""
    return getattr(self, self.USERNAME_FIELD)

  def clean(self):
    setattr(self, self.USERNAME_FIELD, self.normalize_username(self.get_username()))

  def natural_key(self):
    return (self.get_username(),)

  @property
  def is_anonymous(self):
    """
    Always return False. This is a way of comparing User objects to
    anonymous users.
    """
    return False

  @property
  def is_authenticated(self):
    """
    Always return True. This is a way to tell if the user has been
    authenticated in templates.
    """
    return True

  def set_password(self, raw_password):
    self.password = make_password(raw_password)
    self._password = raw_password

  def check_password(self, raw_password):
    """
    Return a boolean of whether the raw_password was correct. Handles
    hashing formats behind the scenes.
    """
    def setter(raw_password):
      self.set_password(raw_password)
      # Password hash upgrades shouldn't be considered password changes.
      self._password = None
      self.save(update_fields=["password"])
    return check_password(raw_password, self.password, setter)

  def set_unusable_password(self):
    # Set a value that will never be a valid hash
    self.password = make_password(None)

  def has_usable_password(self):
    """
    Return False if set_unusable_password() has been called for this user.
    """
    return is_password_usable(self.password)

  def get_session_auth_hash(self):
    """
    Return an HMAC of the password field.
    """
    key_salt = "django.contrib.auth.models.AbstractBaseUser.get_session_auth_hash"
    return salted_hmac(key_salt, self.password).hexdigest()

  @classmethod
  def get_email_field_name(cls):
    try:
      return cls.EMAIL_FIELD
    except AttributeError:
      return 'email'

  @classmethod
  def normalize_username(cls, username):
    return unicodedata.normalize('NFKC', username) if isinstance(username, str) else username

到此這篇關(guān)于使用django自帶的user做外鍵的方法的文章就介紹到這了,更多相關(guān)django user做外鍵內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pytest通過assert進(jìn)行斷言的實(shí)現(xiàn)

    pytest通過assert進(jìn)行斷言的實(shí)現(xiàn)

    assert斷言是一種用于檢查代碼是否按預(yù)期工作的方法,在pytest中,assert斷言可以用于測試代碼的正確性,以確保代碼在運(yùn)行時(shí)按照預(yù)期工作,本文就來介紹一下如何使用,感興趣的可以了解下
    2023-12-12
  • python中關(guān)于提升工作效率的一些小技巧

    python中關(guān)于提升工作效率的一些小技巧

    這篇文章主要介紹了python中關(guān)于提升工作效率的一些小技巧,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Python中.py文件打包成exe可執(zhí)行文件詳解

    Python中.py文件打包成exe可執(zhí)行文件詳解

    這篇文章主要給大家介紹了在Python中.py文件打包成exe可執(zhí)行文件的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • python獲取依賴包和安裝依賴包教程

    python獲取依賴包和安裝依賴包教程

    今天小編就為大家分享一篇python獲取依賴包和安裝依賴包教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python人工智能深度學(xué)習(xí)入門邏輯回歸限制

    python人工智能深度學(xué)習(xí)入門邏輯回歸限制

    這篇文章主要為大家介紹了python人工智能深度學(xué)習(xí)入門之邏輯回歸限制的詳細(xì)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • pytorch中的nn.ZeroPad2d()零填充函數(shù)實(shí)例詳解

    pytorch中的nn.ZeroPad2d()零填充函數(shù)實(shí)例詳解

    這篇文章主要介紹了pytorch中的nn.ZeroPad2d()零填充函數(shù)實(shí)例詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • python 檢查文件mime類型的方法

    python 檢查文件mime類型的方法

    今天小編就為大家分享一篇python 檢查文件mime類型的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python(TensorFlow框架)實(shí)現(xiàn)手寫數(shù)字識(shí)別系統(tǒng)的方法

    Python(TensorFlow框架)實(shí)現(xiàn)手寫數(shù)字識(shí)別系統(tǒng)的方法

    這篇文章主要介紹了Python(TensorFlow框架)實(shí)現(xiàn)手寫數(shù)字識(shí)別系統(tǒng)的方法。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • Python函數(shù)和文件操作詳情

    Python函數(shù)和文件操作詳情

    這篇文章主要介紹了Python函數(shù)和文件操作詳情,函數(shù)在編程中是一個(gè)很重要的角色,我們可以將若干個(gè)語句組合形成一個(gè)函數(shù),它可以接受傳入?yún)?shù),并在內(nèi)部進(jìn)行相關(guān)計(jì)算后產(chǎn)生輸出,下文詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-05-05
  • Python爬蟲獲取圖片并下載保存至本地的實(shí)例

    Python爬蟲獲取圖片并下載保存至本地的實(shí)例

    今天小編就為大家分享一篇Python爬蟲獲取圖片并下載保存至本地的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評(píng)論

清远市| 呼伦贝尔市| 民县| 大宁县| 济南市| 白河县| 德清县| 万载县| 金湖县| 千阳县| 宁阳县| 陆河县| 文水县| 专栏| 栾川县| 永胜县| 仲巴县| 吉木萨尔县| 内乡县| 杭锦旗| 德清县| 酒泉市| 阿鲁科尔沁旗| 望城县| 高要市| 琼结县| 龙胜| 安溪县| 怀化市| 五指山市| 前郭尔| 新竹市| 河东区| 天气| 会泽县| 巴南区| 通山县| 大丰市| 沐川县| 莱阳市| 宁蒗|