当然有更好的方法来做到这一点?
results = []
if not queryset is None:
for obj in queryset:
results.append((getattr(obj,field.attname),obj.pk))
问题是有时查询集是 None ,当我尝试迭代它时会导致异常。在这种情况下,我只想将结果设置为一个空列表。这段代码来自 Django 视图,但我认为这并不重要——这似乎是一个更普遍的 Python 问题。
编辑:我发现是我的代码将一个空的查询集变成了一个“无”而不是返回一个空列表。能够假设查询集始终是可迭代的,通过允许删除“if”语句来简化代码。下面的答案可能对遇到相同问题但无法修改其代码以保证查询集不是“无”的其他人有用。