Django ORM模型的查询对象:
2019-02-17 本文已影响0人
LittleTrue
Object对象:
一个object对象就是表中的一条数据,表中所有的字段它都有。
例如:
我取Uhost表中的第一个对象
>>> host = Uhost.objects.all()[0]
>>> print type(host)
<class ‘ucloud.models.Uhost‘>
注意:
对象获取某个值使用“.”, 获取到的是值
单当某个object对象获取ForeighKey时, 获取到的是另一关联的对象, 即跨表查询。
—————————————————————————————————————
QuerySet查询集:
查询集是一组数据 Object对象的集合,跟python的list基本一样的。
>>> host2 = Uhost.objects.all().values(‘ip‘,‘name‘)
>>> print type(host2)
<class ‘django.db.models.query.ValuesQuerySet‘>
[{‘ip‘: u‘10.6.13.253‘, ‘name‘: u‘dbbackupsyncer2‘}, {‘ip‘: u‘10.6.30.43‘, ‘name‘: u‘SRV-CPMS10-WEB16‘}]
我们知道, 获取对象数据字段时, 单个的数据对象跨表查询可以用点或者set魔术方法。
而QuerySet可以使用双下划线“_”,例如获取Uhost表中外键关联的project表的project id 和project name,可以这样做:
>>> host2 = Uhost.objects.all().values(‘ip‘,‘name‘,‘project__id‘,‘project__name‘)
>>> host2[0]
{‘ip‘: u‘10.6.13.253‘, ‘project__name‘: u‘CPMS10‘, ‘name‘: u‘dbbackupsyncer2‘, ‘project__id‘: u‘org-81‘}