You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中根据用户输入获取MySQL表的指定列

解决Django中动态获取模型对象属性的问题

这问题我之前开发时也碰到过,确实直接用animalwho.input2是行不通的——因为input2是个字符串变量,而点号.访问属性时需要的是实际的属性名称(比如weight),不是字符串。不过Python内置的getattr()函数刚好能完美解决这个动态获取属性的需求!

具体实现方法

你只需要把原来的animalwho.input2替换成getattr()函数调用就行,代码示例如下:

# 先获取指定动物的对象
animalwho = Wildlife.objects.get(animal=input1)
# 动态获取指定列的值
target_value = getattr(animalwho, input2)

比如当input1='cat'、input2='weight'时,target_value就会返回40,完全符合你的需求。

额外的容错处理

如果担心input2可能传入不存在的列名(比如打错字),可以给getattr()加个默认值参数,避免抛出AttributeError:

target_value = getattr(animalwho, input2, None)

这样如果传入的列名不存在,就会返回None,程序不会直接崩溃。

原理说明

getattr()是Python的内置函数,作用就是根据字符串形式的属性名,获取对象对应的属性值,正好适配你这种需要动态指定属性的场景,在Django模型对象上使用完全没问题。

内容的提问来源于stack exchange,提问作者user13115670

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 15:02:53