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) 编辑 收藏 举报