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的内置函数用法有错误?还是我不能这样使用?
展开
 我来答
和谐且精明丶爱侣e
推荐于2018-01-26 · TA获得超过360个赞
知道小有建树答主
回答量:170
采纳率:0%
帮助的人:214万
展开全部

具体的写法是

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这个字段没。
百度网友1c2fd6d
2018-01-26
知道答主
回答量:6
采纳率:0%
帮助的人:6144
展开全部
补充一下:我用的1.11版本的jango,ServerInformation._meta.get_fields() 这样取到所有字段
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式