溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Django對models里的objects的使用詳解

發(fā)布時間:2020-10-14 16:40:03 來源:腳本之家 閱讀:244 作者:Moniicoo 欄目:開發(fā)技術(shù)

首先我們先熟悉下objects的大致概念.

object是模型屬性---用于模型對象和數(shù)據(jù)庫交互 .

objects = Manager() 是管理器類型的對象 ,是Model和數(shù)據(jù)庫進行查詢的接口.

objects : 管理器對象

是Manager類型的對象,定義在from django.db import models中

用于模型對象和數(shù)據(jù)庫交互

是默認自動生成的屬性,但是可以自定義管理器對象

實例:

class Students(models.Model):

  #  stuobj  = models.Manager()  #第一種重新定義objects,objects是Manager()的對象
  #  students.objects.all() 變成了 Students.stuObj.all()
  #  stuobj2 = studentManager() 重新定義objects,查詢變成Students.stuObj2.all()
  sname  = models.CharField(max_length=20)
  sgender = models.CharField(max_length=20)
  sage   = models.IntegerField()
  scontend = models.CharField(max_length=100,null=True,blank=True)

自原本的我們的objects=models.Manager(),查詢類的屬性時都是. 類名.objects.方法

Students.objects.all() 查詢完之后返回一個queryset()

定義管理器對象:例如stuobj = models.Manager()

一旦自定義管理器對象,默認的objects 就不再自動生成,查詢時就變成了

Students.stuobj.all()

查詢時某些字段我們并不想要.這時候我們就可以自定義objects.

class studentManager(models.Manager):
  def get_queryset(self):
    return super(studentManager,self).get_queryset().filter(isDelete=False)

我們定義一個自定義的manager(),繼承models.manager.

后面的我們把isDelete是錯誤的,就如上面自己定義的,下面

stuobj2 = studentManager()

Students.stuobj2.all()就把isDelete是錯誤的刪除了.

以上這篇Django對models里的objects的使用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI