Django 如何遍历反向多通集,属性错误

Django 如何遍历反向多通集,属性错误,django,Django,“集合”列表中的条目与“键”具有多个同一关系(已在模型文件中定义)。当我运行这个脚本时,我得到一个错误:“eval(x)”部分的“AttributeError:‘Activities’对象没有属性‘eval’”(第一个eval(键)可以正常工作)。 例如,如果我将行更改为以下代码,它运行良好,但我需要不那么明确: key = modelobj.__class__.__name__ keyval = modelobj.pk sets = ['cat_set', 'dog_set'] for x i

“集合”列表中的条目与“键”具有多个同一关系(已在模型文件中定义)。当我运行这个脚本时,我得到一个错误:“eval(x)”部分的“AttributeError:‘Activities’对象没有属性‘eval’”(第一个eval(键)可以正常工作)。 例如,如果我将行更改为以下代码,它运行良好,但我需要不那么明确:

key = modelobj.__class__.__name__
keyval = modelobj.pk
sets = ['cat_set', 'dog_set']
for x in set:
    test = eval(key).objects.get(pk=keyval).eval(x).values()
    print(test)

使用
getattr
并直接引用模型(为什么需要获取模型名称并运行
eval
?):


不能这样连接,只需将语句拆分为两个语句即可。并使用
getattr
而不是
eval
。如果您只使用了
modelobj.\uuuu class\uuuuu
test = eval(key).objects.get(pk=keyval).cat_set.values()
model = modelobj.__class__
keyval = modelobj.pk
sets = ['cat_set', 'dog_set']

for x in set:
    test = getattr(model.objects.get(pk=keyval), x).values()
    print(test)