django models 查寻 (select)方法

 

django models的代码

 

class
Group(models.Model): name = models.CharField(max_length=64) def __unicode__(self): return self.name class Host(models.Model): hostname = models.CharField(max_length=64) host_group = models.ForeignKey('Group', blank=True, null=True) ip_manager = models.GenericIPAddressField(max_length=64, blank=True, null=True) ip_storage = models.GenericIPAddressField(max_length=64, blank=True, null=True) ip_public = models.GenericIPAddressField(max_length=64, blank=True, null=True) ip_pxe = models.GenericIPAddressField(max_length=64, blank=True, null=True) username = models.CharField(max_length=64, blank=True, null=True) # password = models.CharField(max_length=64, blank=True, null=True)

    status_level 
= ( ('Ok', "ok"), ('Warning ', "Warning"), ('Error ', "Error"), ) status = models.CharField(choices=status_level, max_length=64, blank=True, null=True) def __unicode__(self): return self.hostname

创建两个记录,一条是管理组,一条是计算组

image

 

创建三个主机

image

1、 获取所有的主机列表

使用 models.Host.objects.all()

image

 

 

 

 

2、获取一台hostname 是node-5的主机

使用 models.Host.objects.get(hostname='node-5.domain.tld')

image

 

3、获取一个groupname 是manager的主机组

m = models.Group.objects.get(name='Manager')

m.host_set.select_related()

注: 其中host_set 中的host是一个表的名字

 

image

更简单的一条完成

m_l = models.Group.objects.get(name='Manager').host_set.select_related()

注: 其中host_set 中的host是一个表的名字

image

 

4、判断是否存在记录

使用filter来过滤,返回一个列表,

注:使用场景一般为判断记录是否存在或者其他等判断

image

 

posted @ 2016-02-18 13:54  zhaogaolong  阅读(281)  评论(0编辑  收藏  举报