Django--ORM--模型增刪改查--備忘
以上運算子都區分大小寫,在這些運算子前加上i表示不區分大小寫,
如iexact、icontains、istartswith、iendswith.
insert into tb_bookinfo()values()
新增--save
book = BooksInfo(
bookname = '紅樓夢',
bookpubtime = date(1930,9,1),
bookauthor = '曹雪芹'
)
character = CharacterInfo(
charactername = '豬八戒',
charactergender = 1,
characterage = 55,
chac_description = '豬悟能',
cbook = book
)
新增--create
CharacterInfo.objects.create(
charactername = '女兒國國王',
charactergender = 1,
characterage = 20,
chac_description = '女兒美',
cbook = book
)
查詢多條記錄--返回的是列表
BooksInfo.objects.all()
CharacterInfo.objects.all()
查詢記錄條數
BooksInfo.objects.count()
CharacterInfo.objects.count()
查詢單條記錄
book = BooksInfo.objects.get(bookname = '西遊記')
BooksInfo.objects.get(id=1)
BooksInfo.objects.filter(id__exact=1)
模糊查詢
BooksInfo.objects.filter(bookname__contains='夢')
BooksInfo.objects.filter(bookname__endswith='義')
BooksInfo.objects.filter(bookname__startswith='西')
BooksInfo.objects.filter(bookname__istartswith='西')
空查詢
BooksInfo.objects.filter(bookname__isnull = False)
範圍查詢
BooksInfo.objects.filter(id__in=[1,2,4])
屬性與常量之間的比較查詢:大於,大於等於,小於,小於等於,exclude
BooksInfo.objects.filter(id__gt=3)
BooksInfo.objects.filter(id__gte=2)
BooksInfo.objects.filter(id__lt=3)
BooksInfo.objects.filter(id__lte=3)
BooksInfo.objects.exclude(id=1)
日期查詢
year、month、day、week_day、hour、minute、second:對日期時間型別的屬性進行運算
BooksInfo.objects.filter(bookpubtime__year=1930)
BooksInfo.objects.filter(bookpubtime__gt=date(1930,9,1))
屬性與屬性的比較:F(屬性名)
from django.db.models import F
BooksInfo.objects.filter(bookcommentcount__gte=F('bookreadcount'))
BooksInfo.objects.filter(bookcommentcount__gte=F('bookreadcount')*2)
and 查詢
BooksInfo.objects.filter(bookauthor__contanins='羅',bookname__startswith='三')
or查詢Q(屬性名__運算子=值)使用&、|連線,&表示邏輯與,|表示邏輯或,~操作符表示非not
BooksInfo.objects.filter(Q(bookreadcount__gt=300)|Q(bookname__contains='吳'))
BooksInfo.objects.filter(~Q(pk=3))
BooksInfo.objects.filter(~Q(id=3))
聚合查詢--返回的是字典
BooksInfo.objects.aggregate(Sum('bookreadcount'))
使用count時一般不使用aggregate()過濾器
BooksInfo.objects.count()
排序
BooksInfo.objects.all().order_by('bookreadcount')
BooksInfo.objects.all().order_by('-bookreadcount')
關聯查詢語法:一到多,多的模型類名小寫
一對應的模型類物件.多對應的模型類名小寫_set
b = BooksInfo.objects.get(id=1)
b.characterinfo_set.all()
多到一
c = CharacterInfo.objects.get(id=1)
c.cbook
訪問一模型的id:多對應的模型類物件.關聯類屬性_id
c.cbook_id
關聯過濾查詢:多的模型類名小寫
BooksInfo.objects.filter(characterinfo__charactername='賈寶玉')
BooksInfo.objects.filter(characterinfo__charactername__contains='玉')
BooksInfo.objects.filter(characterinfo__characterage__gt=30)
修改:單條修改
c = CharacterInfo.objects.get(charactername='豬八戒')
c.charactername='豬哥哥'
c.save()
批量修改
CharacterInfo.objects.filter(charactername='林黛玉').update(charactername='林妹妹')
刪除:
模型類物件delete
c = CharacterInfo.objects.get(id=3)
c.delete()
模型類.objects.filter().delete()
CharacterInfo.objects.filter.(id=14).delete()