1. 程式人生 > >Django--ORM--模型增刪改查--備忘

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()