1. 程式人生 > >12)django-ORM(單表返回數據3種方式)

12)django-ORM(單表返回數據3種方式)

apt 數據 ron rfi div spa urn 單表 del

單表查詢還回數據有3種形式,返回形式不一樣,模板調用方式不同

1)返回Queryset裏面內容為對象:Business.objects.all() 這裏內容顯示是對象

2)返回Queryset裏面內容為字典:Business.objects.all().values("id","caption")這裏內容是字典

3)返回Queryset裏面內容為元組:Business.objects.all().values_list("id","caption")這裏顯示是元組


   class Business(models.Model):
  caption=models.CharField(max_length=32)
  code=models.CharField(max_length=32,null=True,default="SA")  

  #1) v1
=Business.objects.all() #Queryset #[obj(id,caption,code),obj(id,caption,code),obj(id,caption,code)]
  #2)
v2=Business.objects.all().values("id","caption") #Queryset,註意這裏列表不是對象了,是字典 #[{"id":1,"caption":"運圍部"},{"id":1,"caption":"運圍部"}]   #3) v3=Business.objects.all().values_list("
id","caption") #Queryset,註意這裏列表不是對象了,返回的是元組 #[(1,“運圍部”),(2,“運圍部”)] return render(request,"business.html",{"v1":v1,"v2":v2,"v3":v3})
-------------------------------------
 
 模板:
  1)
<ul> {% for row in v1 %} <li>{{ row.id }} {{ row.caption }} {{ row.code }}</li> {
% endfor %} </ul>   2) <ul> {% for row in v2 %} <li>{{ row.id }} {{ row.caption }}</li> {% endfor %} </ul>
  3) <ul> {% for row in v3 %} <li>{{ row.0 }} {{ row.1 }}</li> {% endfor %} </ul> values queryset是字典,values_list是queryset下是元組,其他返回都是queryset下是對象 models.Business.objects.get(id=1)直接返回是一個對象,不存在會報錯 如何解決: models.Business.objects.filter(id=1).first()會更好

12)django-ORM(單表返回數據3種方式)