肯定有更好的方法吗?
results = []
if not queryset is None:
for obj in queryset:
results.append((getattr(obj,field.attname),obj.pk))
问题是有时 queryset 是 None,当我尝试迭代它时会导致异常。在这种情况下,我只想将结果设置为一个空列表。此代码来自 Django View ,但我认为这无关紧要——这似乎是一个更一般的 Python 问题。
编辑: 我发现是我的代码将空查询集变成“无”而不是返回空列表。能够假设查询集始终是可迭代的,通过允许删除“if”语句来简化代码。下面的答案可能对遇到同样问题但无法修改代码以保证查询集不是“无”的其他人有用。
最佳答案
results = [(getattr(obj, field.attname), obj.pk) for obj in queryset or []]
关于python - 重构此 Python 代码以迭代容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/495294/