首页html xyh

Django ORM常用查询的返回值类型

表结构:

class IDC(models.Model):
    """
    机房信息
    """
    name = models.CharField('机房', max_length=32)
    floor = models.IntegerField('楼层', default=1)

    class Meta:
        verbose_name_plural = "机房表"

    def __str__(self):
        return self.name
View Code

常用的查询方法:

get():获取单条数据,不存在则报错(不建议)

models.IDC.objects.get(id=1)        

建议用以下查询方法获取单条数据,没有则返回None

models.Business.objects.filter(id=1).first()

 

filter():获取指定条件的数据

models.IDC.objects.filter(name='上海') 

 all():获取全部

defer(*fields) :排除列出的字段

only(*fields):只查列出的字段

values = models.IDC.objects.all()
values = models.IDC.objects.defer()
values = models.IDC.objects.only('id', 'name', 'floor')

all返回值(和defer,only) 一样,返回类型是一个列表,列表中包含的是QuerySet对象    <QuerySet [<IDC: 上海>, <IDC: 北京>, <IDC: 广州>]>

获取对象中的值的方法是:

result = map(lambda x: {'id': x.id, 'name': "%s-%s" % (x.name, x.floor)}, values)

 

values(*fields) :只查列出的字段

values = models.IDC.objects.values('id', 'name', 'floor')

values返回值是ValuesQuerySet,是QuerySet 的子类,可以用QuerySet里的方法,返回的不是list,对ValuesQuerySet遍历,每一个元素是“字典”dict。

 <QuerySet [{'id': 1, 'name': '上海', 'floor': 1}, {'id': 2, 'name': '北京', 'floor': 5}, {'id': 3, 'name': '广州', 'floor': 5}]>

 获取对象中的值的方法是:

result = map(lambda x: {'id': x['id'], 'name': "%s-%s" % (x['name'], x['floor'])}, values)

Values_list 和values一样只是返回的不是字典而是元组

 

posted on 2017-07-26 09:37  许玉辉  阅读(1251)  评论(0)    收藏  举报

导航

页脚Html代码 xyh