12)django-ORM(单表返回数据3种方式)

单表查询还回数据有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()会更好

 

posted on 2017-11-01 10:59  shisanjun  阅读(1663)  评论(0编辑  收藏  举报

导航