如何在另一个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字符串?
发布于 2017-11-21 15:35:22
如果我正确地理解了您,您希望收集所有具有name属性的q对象的groups的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'))此解决方案遍历属性。从你的查询集开始,然后得到组,然后得到组名。
发布于 2017-11-28 09:08:07
我找到答案了!
我需要使用'firstfield__secondfield__thirdfield'在python中创建多个示例。
对于问题描述中的示例,我应该编写:queryset_for_table.values('group__name')
也许它会对那里的人有帮助
https://stackoverflow.com/questions/47416747
复制相似问题