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
常用的查询方法:
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一样只是返回的不是字典而是元组
浙公网安备 33010602011771号