动态指定函数中的变量名称

时间:2017-09-12 15:47:16

标签: python django

我正在制作自定义django模板标签。

基本版本:

import models

@register.filter
def intensity1(value):
    return models.CHOICES_FOO[value]

它只返回model.FOO列表

的值'元素

但实际上我有几个不同的列表,models.CHOICES_BARmodels.CHOICES_BAZ

所以我想做一个更通用的函数,传递valuearg,它指定要引用的变量列表。

@register.filter
def intensity2(value, arg):
    return models.arg[value]


arg = "INTENSITY_CHOICES"
print (intensity2(value, arg))

但当然这不起作用。失败module 'models' has no attribute 'arg'

有没有办法说出类似的东西?或者我会更好地将所有这些选择保留在dict中,然后通过参考密钥来检索它们?

1 个答案:

答案 0 :(得分:2)

您可以使用getattr按名称获取财产:

return getattr(models, arg)[value]