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

Django的models模型的具體使用

 更新時(shí)間:2019年07月15日 08:26:32   作者:lemon  
這篇文章主要介紹了Django的models模型的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

model的常用字段

V=models.CharField(max_length=None[, **options])    #varchar
V=models.EmailField([max_length=75, **options])    #varchar
V=models.URLField([verify_exists=True, max_length=200, **options])    #varchar
V=models.FileField(upload_to=None[, max_length=100, **options])    #varchar
#upload_to指定保存目錄可帶格式,
V=models.ImageField(upload_to=None[, height_field=None, width_field=None, max_length=100, **options])
V=models.IPAddressField([**options])    #varchar
V=models.FilePathField(path=None[, match=None, recursive=False, max_length=100, **options]) #varchar
V=models.SlugField([max_length=50, **options])    #varchar,標(biāo)簽,內(nèi)含索引
V=models.CommaSeparatedIntegerField(max_length=None[, **options])    #varchar
V=models.IntegerField([**options])    #int
V=models.PositiveIntegerField([**options])    #int 正整數(shù)
V=models.SmallIntegerField([**options])    #smallint
V=models.PositiveSmallIntegerField([**options])    #smallint 正整數(shù)
V=models.AutoField(**options)    #int;在Django代碼內(nèi)是自增
V=models.DecimalField(max_digits=None, decimal_places=None[, **options])    #decimal
V=models.FloatField([**options])    #real
V=models.BooleanField(**options)    #boolean或bit
V=models.NullBooleanField([**options])    #bit字段上可以設(shè)置上null值
V=models.DateField([auto_now=False, auto_now_add=False, **options])    #date
#auto_now最后修改記錄的日期;auto_now_add添加記錄的日期
V=models.DateTimeField([auto_now=False, auto_now_add=False, **options])    #datetime
V=models.TimeField([auto_now=False, auto_now_add=False, **options])    #time
V=models.TextField([**options])    #text
V=models.XMLField(schema_path=None[, **options])    #text
——————————————————————————–
V=models.ForeignKey(othermodel[, **options])    #外鍵,關(guān)聯(lián)其它模型,創(chuàng)建關(guān)聯(lián)索引
V=models.ManyToManyField(othermodel[, **options])    #多對(duì)多,關(guān)聯(lián)其它模型,創(chuàng)建關(guān)聯(lián)表
V=models.OneToOneField(othermodel[, parent_link=False, **options])    #一對(duì)一,字段關(guān)聯(lián)表屬性

經(jīng)典情景示例

書(shū)籍,作者,出版社之間的關(guān)系,這里為了便于演示,我們盡量精簡(jiǎn)了表中的字段,書(shū)籍表具有書(shū)名,出版社同出版社表建立一對(duì)多的關(guān)系[foreign key],一本書(shū)可以具有多個(gè)作者,又同作者表建立多對(duì)多的關(guān)系[many-to-many],作者表有名稱(chēng),年齡,出版社表有出版社名稱(chēng)。

from django.db import models
class Publisher(models.Model):
  name = models.CharField(max_length=30)
 
  def __str__(self):
    return self.name
 
class Author(models.Model):
  name = models.CharField(max_length=30)
  age = models.IntegerField()
 
  def __str__(self):
    return self.name
 
class Book(models.Model):
  title = models.CharField(max_length=100)
  authors = models.ManyToManyField(Author)
  publisher = models.ForeignKey(Publisher,on_delete=models.CASCADE)
 
  def __str__(self):
    return self.title

選擇對(duì)象

獲取全體對(duì)象

Publisher.objects.all() #獲取所有對(duì)象

篩選對(duì)象

Publisher.objects.filter(name='人們教育出版社') #獲取的是一個(gè)對(duì)象列表
dict = {'name':'lemon','age':18}
Author.objects.filter(**dict) #列表傳參的方法

獲取單個(gè)對(duì)象

Publisher.objects.get(name='機(jī)械工業(yè)出版社') #找不到會(huì)報(bào)錯(cuò)!??!

對(duì)象排序

Author.objects.order_by("name","-age") #可以按照多個(gè)字段排序,- 表示逆向排序

連查

Author.objects.filter(name='lemon').order_by('-age')[0]

批量更新

Author.objects.all().update(age='18')

刪除對(duì)象

Author.objects.filter(name='lemon').delete()

外鍵和多對(duì)多操作

訪問(wèn)外鍵

Book.objects.get(id=1).publisher #得到書(shū)籍的出版社

反向查詢(xún)

models.Publisher.objects.get(id=1).book_set.all() #反向查詢(xún),得到的是一個(gè)queryset對(duì)象列表

多對(duì)多操作

Book.objects.get(id=1).authors.all() #得到queryset對(duì)象列表

自定義models方法

class Author(models.Model):
  name = models.CharField(max_length=30)
  age = models.IntegerField()

  def __str__(self):
    return self.name
  def status(self):
    if self.name=='lemon':
      return '帥哥'

運(yùn)行結(jié)果:

aa = models.Author.objects.get(id=1)
print(aa.status())
———————————————運(yùn)行結(jié)果——————————————————
帥哥

自定義manager管理器

class AuthorManager(models.Manager):
  def name_count(self,str_name):
    return self.filter(name__icontains=str_name).count()
class Author(models.Model):
  name = models.CharField(max_length=30)
  age = models.IntegerField()

  def __str__(self):
    return self.name
  def status(self):
    if self.name=='lemon':
      return '帥哥'
  #一旦定義了新的管理器,默認(rèn)管理器需要顯示聲明出來(lái)才可以使用
  objects = models.Manger() #默認(rèn)管理器
  object=AuthorManager() #新定義管理器

執(zhí)行結(jié)果:

aa = models.Author.object.name_count('lemon')
print(aa) #——————》2

自定義sql語(yǔ)句

class AuthorManager(models.Manager):
  def age_stat(self, age_int):
    cursor = connection.cursor()
    cursor.execute("""
      SELECT NAME
      FROM app2_author
      WHERE age = %s""", [age_int])
    #fetchall()返回的是元組的列表
    return [row[0] for row in cursor.fetchall()]
    
class Author(models.Model):
  name = models.CharField(max_length=30)
  age = models.IntegerField()
  # objects =models.Manager()
  object=AuthorManager()
  def __str__(self):
    return self.name

執(zhí)行結(jié)果:

aa = models.Author.object.age_stat(18)
print(aa)
-----------------
['lemon', 'Luouo']

過(guò)濾字段發(fā)方法

__exact 精確等于 like 'aaa'
 __iexact 精確等于 忽略大小寫(xiě) ilike 'aaa'
 __contains 包含 like '%aaa%'
 __icontains 包含 忽略大小寫(xiě) ilike '%aaa%',但是對(duì)于sqlite來(lái)說(shuō),contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一個(gè)list范圍內(nèi)
__startswith 以...開(kāi)頭
__istartswith 以...開(kāi)頭 忽略大小寫(xiě)
__endswith 以...結(jié)尾
__iendswith 以...結(jié)尾,忽略大小寫(xiě)
__range 在...范圍內(nèi)
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中內(nèi)置的日志模塊logging用法詳解

    Python中內(nèi)置的日志模塊logging用法詳解

    Python的logging模塊提供了記錄程序運(yùn)行情況的日志功能,類(lèi)似于Apache的log4j,很好很強(qiáng)大,這里我們就來(lái)看一下Python中內(nèi)置的日志模塊logging用法詳解
    2016-07-07
  • python 音頻處理重采樣、音高提取的操作方法

    python 音頻處理重采樣、音高提取的操作方法

    這篇文章主要介紹了python 音頻處理重采樣、音高提取,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • python+opencv打開(kāi)攝像頭,保存視頻、拍照功能的實(shí)現(xiàn)方法

    python+opencv打開(kāi)攝像頭,保存視頻、拍照功能的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇python+opencv打開(kāi)攝像頭,保存視頻、拍照功能的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Python 爬蟲(chóng)的原理

    Python 爬蟲(chóng)的原理

    這篇文章主要介紹了Python 爬蟲(chóng)的原理,文中講解非常細(xì)致,幫助大家更好的學(xué)習(xí)和認(rèn)識(shí)爬蟲(chóng),感興趣的朋友可以了解下
    2020-07-07
  • 如何將Python列表轉(zhuǎn)換為字符串

    如何將Python列表轉(zhuǎn)換為字符串

    字符串是Python中最常用的數(shù)據(jù)類(lèi)型,下面這篇文章主要給大家介紹了關(guān)于如何將Python列表轉(zhuǎn)換為字符串的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • python操作yaml說(shuō)明

    python操作yaml說(shuō)明

    這篇文章主要介紹了python操作yaml說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • pyqt5中QThread在使用時(shí)出現(xiàn)重復(fù)emit的實(shí)例

    pyqt5中QThread在使用時(shí)出現(xiàn)重復(fù)emit的實(shí)例

    今天小編就為大家分享一篇pyqt5中QThread在使用時(shí)出現(xiàn)重復(fù)emit的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Python pandas之求和運(yùn)算和非空值個(gè)數(shù)統(tǒng)計(jì)

    Python pandas之求和運(yùn)算和非空值個(gè)數(shù)統(tǒng)計(jì)

    數(shù)據(jù)處理的過(guò)程中經(jīng)常會(huì)遇到判斷空值和求和運(yùn)算的需求,所以下面這篇文章主要給大家介紹了關(guān)于Python pandas之求和運(yùn)算和非空值個(gè)數(shù)統(tǒng)計(jì)的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Python利用PyPDF2庫(kù)處理PDF文件的基本操作

    Python利用PyPDF2庫(kù)處理PDF文件的基本操作

    PyPDF2是一個(gè)Python庫(kù),用于處理PDF文件,包括合并、分割、旋轉(zhuǎn)和提取文本等操作,它是一個(gè)功能強(qiáng)大且靈活的工具,可用于自動(dòng)化處理PDF文件,適用于各種應(yīng)用,從文檔管理到數(shù)據(jù)分析,本文將深入介紹PyPDF2庫(kù),掌握如何利用它來(lái)處理PDF文件,需要的朋友可以參考下
    2023-11-11
  • 將pymysql獲取到的數(shù)據(jù)類(lèi)型是tuple轉(zhuǎn)化為pandas方式

    將pymysql獲取到的數(shù)據(jù)類(lèi)型是tuple轉(zhuǎn)化為pandas方式

    這篇文章主要介紹了將pymysql獲取到的數(shù)據(jù)類(lèi)型是tuple轉(zhuǎn)化為pandas方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05

最新評(píng)論

星座| 舟山市| 新宾| 张家界市| 贵德县| 太仓市| 宿松县| 纳雍县| 通道| 海淀区| 依安县| 合肥市| 衡阳县| 天长市| 青岛市| 三门峡市| 桂平市| 宁德市| 汉川市| 盘山县| 昌平区| 天等县| 广昌县| 内黄县| 安国市| 佛冈县| 上栗县| 长白| 邹城市| 文化| 雷山县| 章丘市| 东乌珠穆沁旗| 城固县| 宿松县| 田东县| 陈巴尔虎旗| 新竹市| 睢宁县| 米脂县| 大洼县|