導航:首頁 > 凈水問答 > 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過濾相關的資料

熱點內容
飲水機下葯的片叫什麼 瀏覽:881
烏蘇市凈水源污水處理廠環評公示 瀏覽:841
污水中種植什麼植物 瀏覽:202
玉米白酒要蒸餾多長時間 瀏覽:809
1立方污水產多少污泥 瀏覽:299
道路市政雨水污水怎麼排好 瀏覽:673
納濾凈水機和ro純水機買哪個 瀏覽:321
除垢劑洗銀杯子 瀏覽:345
污水菌液干什麼的 瀏覽:719
用了空氣凈化器嗓子干什麼原因 瀏覽:395
環保廢水回收處理設備 瀏覽:836
和悅汽車空調濾芯怎麼拆 瀏覽:280
電凈水器哪個品牌好 瀏覽:608
中國水處理產品分類 瀏覽:609
一級反滲透膜殼規格 瀏覽:604
沃刻凈水器使用什麼濾芯 瀏覽:679
為什麼現在的飲水機淘汰了 瀏覽:514
常州廢水處理 瀏覽:171
機油濾芯什麼紙最好 瀏覽:602
製作平板超濾膜用什麼設備 瀏覽:940