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创建两个记录,一条是管理组,一条是计算组
创建三个主机
1、 获取所有的主机列表
使用 models.Host.objects.all()
2、获取一台hostname 是node-5的主机
使用 models.Host.objects.get(hostname='node-5.domain.tld')
3、获取一个groupname 是manager的主机组
m = models.Group.objects.get(name='Manager')
m.host_set.select_related()
注: 其中host_set 中的host是一个表的名字
更简单的一条完成
m_l = models.Group.objects.get(name='Manager').host_set.select_related()
注: 其中host_set 中的host是一个表的名字
4、判断是否存在记录
使用filter来过滤,返回一个列表,
注:使用场景一般为判断记录是否存在或者其他等判断