導航:首頁 > 凈水問答 > djangomodel過濾

djangomodel過濾

發布時間:2023-09-14 00:05:12

❶ django model的get和filter方法的區別

django的get和filter方法是django model常用到的,搞清楚兩者的區別非常重要。

為了說明它們兩者的區別定義2個models

class Student(models.Model):
name = models.CharField('姓名', max_length=20, default='')
age = models.CharField('年齡', max_length=20, default='')

class Book(models.Model):
student = models.ForeignKey(Student)

一.先說下django的get方法:

1django的get方法是從資料庫的取得一個匹配的結果,返回一個對象,如果記錄不存在的話,它會報錯。
比如我資料庫里有一條記錄,記錄的name的值是"Python"的話,我用student = Student.objects.get(name='老王python'),
返回的是一個記錄對象,你可以通過student.__dict__來查看,它返回的是一個字典的形式,{'key':valeus},key是欄位的名稱,而values是值的內容。
而如果我用get方法來查詢一個資料庫里不存在的記錄,程序會報錯。
比如:student = Student.objects.get(name='老王'),你自己可以運行看下。

2如果你用django的get去取得關聯表的數據的話,而關鍵表的數據如果多於2條的話也會報錯。
比如我的student表裡有一個記錄:
id name age
1 python 24

book表:

id student_id
1 1
2 1

我用
student = Student.objects.get(name='python')
book = Book.objects.get(student)
它也會報錯,因為book表有2條記錄和student表相匹配。

二.再說下django filter:

1django的filter方法是從資料庫的取得匹配的結果,返回一個對象列表,如果記錄不存在的話,它會返回[]。
比如我資料庫里有一條記錄,記錄的name的值是Python的話,我用student = Student.objects.filter(name='老王python')
它返回的student是一個對象的列表,可以看的出來student[0]和上面的get方式返回的student的結果是一樣的。

❷ Python3 django 使用model views查詢MySQL數據怎麼寫

from .models import MODEL(class name)

objs = MODEL.objects.get()或者filter()方法。

❸ django中的orm中怎麼對篩選結果去重

版權歸作者所有,任何形式轉載請聯系作者。
作者:petanne(來自豆瓣)
來源:https://www.douban.com/note/301166150/

1.多表連接查詢:感覺django太NX了。
class A(models.Model):
name = models.CharField(u'名稱')
class B(models.Model):
aa = models.ForeignKey(A)
B.objects.filter(aa__name__contains='searchtitle')

1.5 反向查詢,補上記錄1.5,感覺django太太太NX了。
class A(models.Model):
name = models.CharField(u'名稱')
class B(models.Model):
aa = models.ForeignKey(A,related_name="FAN")
bb = models.CharField(u'名稱')
查A: A.objects.filter(FAN__bb='XXXX'),都知道related_name的作用,A.FAN.all()是一組以A為外鍵的B實例,可前面這樣的用法是查詢出所有(B.aa=A且B.bb=XXXX)的A實例,然後還可以通過__各種關系查找,很好用!!!

2.條件選取querySet的時候,filter表示=,exclude表示!=。
querySet.distinct() 去重復
__exact 精確等於 like 'aaa'
__iexact 精確等於 忽略大小寫 ilike 'aaa'
__contains 包含 like '%aaa%'
__icontains 包含 忽略大小寫 ilike '%aaa%',但是對於sqlite來說,contains的作用效果等同於icontains。
__gt 大於
__gte 大於等於
__lt 小於
__lte 小於等於
__in 存在於一個list范圍內
__startswith 以...開頭
__istartswith 以...開頭 忽略大小寫
__endswith 以...結尾
__iendswith 以...結尾,忽略大小寫
__range 在...范圍內
__year 日期欄位的年份
__month 日期欄位的月份
__day 日期欄位的日
__isnull=True/False

閱讀全文

與djangomodel過濾相關的資料

熱點內容
茶吧台飲水機放水地方壞了怎麼辦 瀏覽:576
長安35機油濾芯和什麼車通用 瀏覽:109
高硬度耐磨雙組份樹脂 瀏覽:614
沁園反滲透桶連接在什麼口 瀏覽:59
蒸餾機製作視頻 瀏覽:405
凈飲機和凈水器怎麼樣 瀏覽:911
廢水處理准四標准 瀏覽:206
在線污水排放監測多少錢 瀏覽:425
除燒水壺水垢 瀏覽:745
水壺用久了會有水垢為什麼 瀏覽:122
凈水器水龍頭濾芯什麼時候更換 瀏覽:814
污水處理廠溶氧儀裝在哪 瀏覽:914
聖源直飲水機怎麼拆下 瀏覽:435
凈水器怎麼接廢水 瀏覽:608
在家快速自製蒸餾水 瀏覽:750
進口slk200空調濾芯在什麼位置 瀏覽:431
凈水機的廢水怎麼不流 瀏覽:606
污水廠水泵用什麼止回閥 瀏覽:37
噴塗車間污水處理工藝 瀏覽:721
什麼是空氣凈化器推薦 瀏覽:481