如何让python将字符串解释为python代码?

时间:2012-01-18 16:23:18

标签: python django

我在Django中编写了一个函数来根据类型查找对象,类似于以下内容:

def lookup(modelType, item_id):
    try:
        return eval(modelType).objects.get(pk=item_id)
    except ObjectDoesNotExist:
        return None
如果存在ID为14的Course对象,则

lookup(Course, 14)应返回Course.objects.get(pk=14)

写这个功能是否可行?谢谢。

1 个答案:

答案 0 :(得分:4)

如果您想使用lookup(Course, 14),请执行此操作。

def lookup( the_model, item_id ):
    try:
        the_model.objects.get( pk=item_id )
    except the_model.DoesNotExist:
        return None

如果您想继续使用您编写的函数,则必须将模型作为字符串传递。

lookup( "Course", 14)

另外。 return None是一个非常糟糕的主意。正确使用异常通常要好得多。