class NewsInfo(models.Model): """新聞表""" title = models.CharField(max_length=100, help_text='新聞標題', verbose_name='新聞標題', blank=True, default='') content = models.TextField(help_text='內容', verbose_name='內容', blank=True, default='') b_date = models.DateField(help_text='日期', verbose_name='日期') read = models.IntegerField(help_text='閱讀量', verbose_name='閱讀量', blank=True, default=0) good = models.IntegerField(help_text='點贊數量', verbose_name='點贊數量', blank=True, default=0) class TypeInfo(models.Model): """新聞型別""" type = models.CharField(max_length=20, help_text='新聞型別', verbose_name='新聞型別')
python manage.py makemigrations
3、執行遷移
python manage.py migrate
4、登入Django後臺,新增一些練習資料
函式名 | 功能 | 返回值 | 說明 |
---|---|---|---|
get | 返回表中滿足條件的一條且只能有一條資料。 | 返回值是一個模型類物件。 | 引數中寫查詢條件。1) 如果查到多條資料,則拋異常MultipleObjectsReturned。2)查詢不到資料,則拋異常:DoesNotExist。 |
all | 返回模型類對應表格中的所有資料。 | 返回值是QuerySet型別 | 查詢集 |
filter | 返回滿足條件的資料。 | 返回值是QuerySet型別 | 引數寫查詢條件。 |
exclude | 返回不滿足條件的資料。 | 返回值是QuerySet型別 | 引數寫查詢條件。 |
order_by | 對查詢結果進行排序。 | 返回值是QuerySet型別 | 引數中寫根據哪些欄位進行排序。 |
Django的互動除錯環境
啟動專案,進入互動環境
python manage.py shell
匯入models模組
from news.models import *
# 查詢id為3的新聞資訊 NewsInfo.objects.get(id=3)
# 查詢所有新聞資料 NewsInfo.objects.all()
# 查詢新聞閱讀量為9999的新聞資料: NewsInfo.objects.filter(read=9999)
#查詢所有id不等於1的新聞資料 NewsInfo.objects.exclude(id=1)
#查詢所有新聞資料並且按id進行排序(從小到大) NewsInfo.objects.all().order_by('id') #查詢所有新聞資料並且按id進行排序(從大到小) NewsInfo.objects.all().order_by('-id')
三、
查詢集特性
- 惰性查詢:只有在實際使用查詢集中的資料的時候才會發生對資料庫的真正查詢
- 快取:當使用的是同一個查詢集時,第一次使用的時候會發生實際資料庫的查詢,然後把結果快取起來,之後再使用這個查詢集時,使用的是快取中的結果
- 索引取值
TypeInfo.objects.all()[0]
- 切片操作
TypeInfo.objects.all()[0:3]
#條件語法格式 模型類.objects.filter(模型類屬性名__條件名=值)
# 查詢名稱裡包含'娛樂’的新聞類別。 TypeInfo.objects.filter(new_type__contains='娛樂')
# 查詢以'國'開頭的新聞類別 TypeInfo.objects.filter(new_type__startswith='國')
結尾:endswith
# 查詢以'資訊'結尾的新聞類別 TypeInfo.objects.filter(new_type__endswith='資訊')
範圍查詢:in
# 查詢id為1或3或5的新聞類別 TypeInfo.objects.filter(id__in=[1,3,5])
# Demo:查詢id大於3的資料 TypeInfo.objects.filter(id__gt=3)
小於:lt
# Demo:查詢id小於3的資料 TypeInfo.objects.filter(id__lt=3)
#Demo:查詢id大於等於5的資料 TypeInfo.objects.filter(id__gte=5)
# Demo:查詢id小於等於3的資料 TypeInfo.objects.filter(id__lte=3)
六、
isnull值為True:表示查詢為空的資料,值為False查詢不為空的資料
Demo:查詢標題不為空的新聞.
NewsInfo.objects.filter(title__isnull=False)