国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Django的models模型

caozhijian / 1082人閱讀

摘要:大于大于等于小于小于等于存在于一個范圍內(nèi)以開頭以開頭忽略大小寫以結尾以結尾,忽略大小寫在范圍內(nèi)日期字段的年份日期字段的月份日期字段的日

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,標簽,內(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字段上可以設置上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])    #外鍵,關聯(lián)其它模型,創(chuàng)建關聯(lián)索引
V=models.ManyToManyField(othermodel[, **options])    #多對多,關聯(lián)其它模型,創(chuàng)建關聯(lián)表
V=models.OneToOneField(othermodel[, parent_link=False, **options])    #一對一,字段關聯(lián)表屬性
經(jīng)典情景示例

書籍,作者,出版社之間的關系,這里為了便于演示,我們盡量精簡了表中的字段,書籍表具有書名,出版社同出版社表建立一對多的關系[foreign key],一本書可以具有多個作者,又同作者表建立多對多的關系[many-to-many],作者表有名稱,年齡,出版社表有出版社名稱。

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
選擇對象

獲取全體對象

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

篩選對象

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

獲取單個對象

Publisher.objects.get(name="機械工業(yè)出版社") #找不到會報錯!!!

對象排序

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

連查

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

批量更新

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

刪除對象

Author.objects.filter(name="lemon").delete()
外鍵和多對多操作

訪問外鍵

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

反向查詢

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

多對多操作

Book.objects.get(id=1).authors.all() #得到queryset對象列表
自定義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 "帥哥"

運行結果:

aa = models.Author.objects.get(id=1)
print(aa.status())
———————————————運行結果——————————————————
帥哥
自定義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 "帥哥"
    #一旦定義了新的管理器,默認管理器需要顯示聲明出來才可以使用
    objects = models.Manger() #默認管理器
    object=AuthorManager() #新定義管理器

執(zhí)行結果:

aa = models.Author.object.name_count("lemon")
print(aa) #——————》2
自定義sql語句
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í)行結果:

aa = models.Author.object.age_stat(18)
print(aa)
-----------------
["lemon", "Luouo"]
過濾字段的方法
__exact 精確等于 like "aaa"
 __iexact 精確等于 忽略大小寫 ilike "aaa"
 __contains 包含 like "%aaa%"
 __icontains 包含 忽略大小寫 ilike "%aaa%",但是對于sqlite來說,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一個list范圍內(nèi)
__startswith 以...開頭
__istartswith 以...開頭 忽略大小寫
__endswith 以...結尾
__iendswith 以...結尾,忽略大小寫
__range 在...范圍內(nèi)
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/45154.html

相關文章

  • Django搭建個人博客:編寫博客文章Model模型

    摘要:在里寫一個數(shù)據(jù)庫驅動的應用的第一步是定義模型,也就是數(shù)據(jù)庫結構設計和附加的其它元數(shù)據(jù)。模型元數(shù)據(jù)是任何不是字段的東西,例如排序選項數(shù)據(jù)庫表名單數(shù)和復數(shù)名稱和。 Django 框架主要關注的是模型(Model)、模板(Template)和視圖(Views),稱為MTV模式。 它們各自的職責如下: 層次 職責 模型(Model),即數(shù)據(jù)存取層 處理與數(shù)據(jù)相關的所有事務: 如何存取...

    winterdawn 評論0 收藏0
  • Python學習之路17-Django入門

    摘要:編程從入門到實踐筆記。執(zhí)行命令后,項目的根目錄下會多出一個名為的數(shù)據(jù)庫文件。下面創(chuàng)建一個主題類用戶學習的主題返回模型的字符串表示類是中的一個定義了模型基本功能的類。這種交互式環(huán)境稱為,常用語測試項目和排除故障。 《Python編程:從入門到實踐》筆記。從本篇開始將是該書的最后一個項目,將用3篇文章來介紹Django的基礎。完成一個學習筆記的小網(wǎng)站。 1. 前言 在本篇中,我們將: 用...

    shadowbook 評論0 收藏0
  • Django 博客開發(fā)教程 3 - 創(chuàng)建 Django 博客數(shù)據(jù)庫模型

    摘要:而對于標簽來說,一篇文章可以有多個標簽,同一個標簽下也可能有多篇文章,所以我們使用,表明這是多對多的關聯(lián)關系。理解多對一和多對多兩種關聯(lián)關系我們分別使用了兩種關聯(lián)數(shù)據(jù)庫表的形式和。表明一種一對多的關聯(lián)關系。 設計博客的數(shù)據(jù)庫表結構 博客最主要的功能就是展示我們寫的文章,它需要從某個地方獲取博客文章數(shù)據(jù)才能把文章展示出來,通常來說這個地方就是數(shù)據(jù)庫。我們把寫好的文章永久地保存在數(shù)據(jù)庫里,...

    Shimmer 評論0 收藏0
  • Django Model View Template 之間簡單交互 (二)

    摘要:當然還有其他高級的使用,日后再說完整的用戶名郵箱聯(lián)系地址留言信息用戶留言信息使用之前已經(jīng)定義好了數(shù)據(jù)模型的字段元數(shù)據(jù)方法等。 前言 接續(xù)前文,上一篇文章主要涉及了 Django 項目的基礎配置等,這篇主要涉及數(shù)據(jù)庫相關的 ORM ,也就是 Django 中的 Model 的使用,MVT 三層之間的交互 教程基本都是東拼西湊的,防止有些東西表述不準確,因為我之前寫 JavaScript ...

    Coding01 評論0 收藏0
  • Django基礎之六(模型理論知識)

    摘要:在模型中添加是完全可選的,所有選項都不是必須的。一個模型的數(shù)據(jù)庫表名稱,由這個模型的應用名和模型類名稱之間加上下劃線組成。使用來表示隨機排序。默認值為這個選項為時可以對數(shù)據(jù)庫表進行或刪除等操作。 Django模型理論知識 簡介 Django模型所在的位置: URL--->視圖--->模型(mysql) 什么是模型: 模型就是數(shù)據(jù)的唯一的&權威的信息源 包含所存儲的詩句的必要字段和...

    lmxdawn 評論0 收藏0

發(fā)表評論

0條評論

caozhijian

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<