如何在另一个getattr
内使用getattr
方法?
我想写类似的东西:
my_attr = 'group.getattr(name)'
my_list = list()
for q in queryset_for_table:
y = getattr(q, my_attr, None)
my_list.append(y)
我如何写my_attr
字符串正确?
答案 0 :(得分:1)
如果我理解正确,您希望收集具有name
属性的所有group
个对象的q
个group
s。如果是这样,以下代码将通过将所需操作拆分为两个可读步骤来起作用:
my_list = list()
for q in queryset_for_table:
group = getattr(q, 'group', None)
if group is not None:
my_list.append(group.name)
如果所有q
个对象都具有group
属性,您还可以使用:
my_list = list()
for q in queryset_for_table:
my_list.append(q.group.name)
对于任意嵌套属性,以下内容应该有效:
def get_nested_attributes(object, attributes):
for attribute in attributes:
objects = [getattr(o, attribute, None) for o in objects]
return objects
my_list = get_nested_attrs(queryset_for_table, ('group', 'name'))
此解决方案迭代属性。您从查询集开始,然后获取组,然后获取组名。
答案 1 :(得分:0)
我找到了答案!
我需要使用'firstfield__secondfield__thirdfield'
在python中创建多个样本
对于我在问题描述中的例子我应该写:
queryset_for_table.values('group__name')
也许它会帮助那里的人