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‘}
上一篇 下一篇

猜你喜欢

热点阅读