django遍历model里面的属性字段
ServerInformation是model的classresults=ServerInformation.objects.filter(id=1)#获取id=1的数据...
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.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的内置函数用法有错误?还是我不能这样使用? 展开
2个回答
展开全部
具体的写法是
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这个字段没。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询