django 一对多的添加记录create 和save 要领,update 更新和save()要领的区别,盘问

时间:2021-11-14 03:21:08

转发之https://www.cnblogs.com/gyh04541/p/7910004.html

盘问api的要领:

表.objects.all() ---[obj1,obj2,....]

表.objects.all().first()

表.objects.filter(id=2) ---[obj1,]  ,得到一个调集东西,调集里只有一个,跟上first()或者【0】取到一个具体东西

表.objects.get(id=2)---obj,得到一个单独的东西,确定能找到,可以用,如果找到多个或者没有的,都报错。

QuerySet.first(),与get()要领一样,都得到一个东西

QuerySet.last(),与get()要领一样,都得到一个东西

----update 和save要领区别

Book.objects.filter(id=5).update(price=1000)  #直接更新update 是QuerySet调集东西的要领,保举

save要领

book = Book.objects.get(id=5)

book.price=400

book.save()

------value要领,

values(*field),得到一个可迭代的字典序列,不再是一个个东西,而是东西的值,#得到QuerySet调集是所有的记录,,里面是字典,key是字段,value是值

def query_value(request): b1 = Book.objects.values(title)#title值字段 # print(b1) #得到QuerySet调集是所有的记录,,里面是字典,key是字段,value是值, #< QuerySet[{‘title‘: ‘Linux‘}, {‘title‘: ‘项塔兰‘}, {‘title‘: ‘追鹞子的人‘}, {‘title‘: ‘富爸爸‘}] > b2 = Book.objects.values(title,price)#可以加多个字段 print(b2) #< QuerySet[{‘title‘: ‘Linux‘, ‘price‘: Decimal(‘30.00‘)}, # {‘title‘: ‘项塔兰‘, ‘price‘: Decimal(‘45.00‘)}, # {‘title‘: ‘追鹞子的人‘, ‘price‘: Decimal(‘39.90‘)}, # {‘title‘: ‘富爸爸‘, ‘price‘: Decimal(‘23.00‘)}] > b3 = Book.objects.filter(id__gt=4).values(title)#盘问id大于4,的title,得到一个东西调集,显示书名 #<QuerySet [{‘title‘: ‘富爸爸‘}]> print(b3) return HttpResponse(value 要领的盘问要领)

---

value_list ( )  得到一个元组格局的数据,只有字段的值,

# ----valuelist 要领盘问 ,得到一个元组格局数据,只有字段的值, b4 = Book.objects.filter(id__gt=3).values_list(title) print(b4) #<QuerySet [(‘追鹞子的人‘,), (‘富爸爸‘,)]>

exclude()要领,

b5 = Book.objects.exclude(id__gt=3)#exclude 排除 ,盘问id大于4的以外的册本,<QuerySet [<Book: Linux>, <Book: 项塔兰>]> b6 = Book.objects.filter(id__lt=4)# 盘问id小于4 的册本 <QuerySet [<Book: Linux>, <Book: 项塔兰>]> print(b5) print(b6) #b5 和b6 得到功效一样,

----

其他盘问要领

# <6>order_by(*field): 对盘问功效排序 # <7>reverse(): 对盘问功效反向排序,---需要先排序order_by(*field),才华反转 # <8>distinct(): 从返回功效中剔除反复纪录 # <9>values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列 # <10>count(): 返回数据库中匹配盘问(QuerySet)的东西数量。 # <11>first(): 返回第一笔记录 # <12>last(): 返回最后一笔记录 # <13>exists(): 如果QuerySet包罗数据,就返回True,否则返回False ---只判断是否有记录

万能的双下划线:

#---------------了不起的双下划线(__)之单表条件盘问----------------

# models.Tb1.objects.filter(id__lt=10, id__gt=1)  # 获取id大于1 且 小于10的值 #

# models.Tb1.objects.filter(id__in=[11, 22, 33]) # 获取id即是11、22、33的数据

# models.Tb1.objects.exclude(id__in=[11, 22, 33]) # not in #  exclude  不包罗指定的数据

# models.Tb1.objects.filter(name__contains="ven")  #包罗的内容

# models.Tb1.objects.filter(name__icontains="ven") # icontains巨细写不敏感

# # models.Tb1.objects.filter(id__range=[1, 2]) # 范畴bettwen and #

# startswith,istartswith, endswith, iendswith,

在url文件中匹配路由和视图函数add