模型層單表操作
阿新 • • 發佈:2018-11-17
單表操作
例:
1. 單表查詢所有使用者:models.Book.objects.all() 得到的是 queryset物件(當成列表),列表裡面,一個一個的物件[user1,user2] 2. render(request, 'booklist.html', {'book_list': ret}) 3. 模板裡: {% for user in book_list %} #要迴圈的內容 {{book.name}} {% endfor%}4. get請求攜帶引數: http://127.0.0.1:8000/deleteuser/?id=1 後臺取值:request.GET.get('id') request.GET['id'] 5. 前臺post提交的資料取值:name=request.POST.get('name')
查詢的API
all(): 查詢所有結果 filter(**kwargs): 它包含了與所給篩選條件相匹配的物件 get(**kwargs): 返回與所給篩選條件相匹配的物件,返回結果有且只有一個,如果符合篩選條件的物件 超過一個或者沒有都會丟擲錯誤。 exclude(**kwargs): 它包含了與所給篩選條件不匹配的物件 order_by(*field): 對查詢結果排序('-id') reverse(): 對查詢結果反向排序 count(): 返回資料庫中匹配查詢(QuerySet)的物件數量。 first(): 返回第一條記錄 last(): 返回最後一條記錄 exists(): 如果QuerySet包含資料,就返回True,否則返回False values(*field): 返回一個ValueQuerySet——一個特殊的QuerySet,執行後得到的並不是一系列 model的例項化物件,而是一個可迭代的字典序列 values_list(*field): 它與values()非常相似,它返回的是一個元組序列,values返回的是一個字典序列 distinct(): 從返回結果中剔除重複紀錄
基於雙下劃線的模糊查詢
Book.objects.filter(price__in=[100,200,300]) Book.objects.filter(price__gt=100) Book.objects.filter(price__lt=100) Book.objects.filter(price__gte=100) Book.objects.filter(price__lte=100) Book.objects.filter(price__range=[100,200]) Book.objects.filter(title__contains="python") Book.objects.filter(title__icontains="python") Book.objects.filter(title__startswith="py") Book.objects.filter(pub_date__year=2012)
2. 單表的刪除
關鍵字: delete()
models.Book.objects.filter(id=id).delete()
3. 單表的增加
兩種方式: 1 book_obj=Book.objects.create(title="python葵花寶典",state=True,price=100,publish="蘋果出版社",pub_date="2012-12-12") 2 book_obj=Book(title="python葵花寶典",state=True,price=100,publish="蘋果出版社",pub_date="2012-12-12") book_obj.save()
4. 單表的修改
關鍵字: update() Book.objects.filter(title__startswith="py").update(price=120)
前後端互動
<form action="/updateuser/?id={{ book.id }}" method="post"> <p><input type="hidden" name="id" value="{{ book.id }}"></p> <p>書名: <input type="text" name="name" value="{{ book.name }}"></p> <p>價格: <input type="text" name="price" value="{{ book.price }}"></p> <p>出版社: <input type="text" name="publish" value="{{ book.publish }}"></p> <input type="submit" value="提交"> </form>