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的内置函数用法有错误?还是我不能这样使用?
具体的写法是
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这个字段没。