django遍历model里面的属性字段

ServerInformation是model的class

results = ServerInformation.objects.filter(id = 1) #获取id=1的数据
allhost = ServerInformation._meta.get_all_field_names() #取得所有的属性字段
vername = ServerInformation._meta.get_field('ServerType').verbose_name #获取每个属性字段的 verbose_name
vervalue = getattr(results,'ServerZone','default') #获取每个属性字段对应的值。

问题是我获取不了属性字段对应的值。求大神帮助,是这个getattr的内置函数用法有错误?还是我不能这样使用?

具体的写法是

results = ServerInformation.objects.get(id = 1)#filter是queryset,没有_meta方法
allhost = ServerInformation._meta.get_all_field_names()#这句没错
vername = ServerInformation._meta.get_field('ServerType').verbose_name#这句也没错,S erverType是该模型的一个属性。
vervalue = ServerInformation._meta.get_field('ServerZone').default #即可获取到默认的值,话说你都懂得获取到verbose_name,怎么不会想到直接.default呢。

ps:

getattr(object, name[, default])

  Return the value of the named attribute of object.  name must be a string. If the string is the name of one of the object’s attributes, the result is the value of that attribute. For example,

getattr(x, 'foobar')

 is equivalent to

 x.foobar

. If the named attribute does not exist, default is returned if provided, otherwise AttributeError is raised.

看看怎么使用。

追问

vervalue = ServerInformation._meta.get_field('ServerZone').default
我用这个取不到值。提示:。所有就这getattr了

追答

'ServerZone'

看看是不是在你的allhost中,model确认下有ServerZone这个字段没。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-26
补充一下:我用的1.11版本的jango,ServerInformation._meta.get_fields() 这样取到所有字段

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网