Django:我如何获得所有员工的查询集?
我正在尝试:
staff = User.objects.get(is_staff=True)
但得到一个TypeError:
'User' object is not iterable
答案 0 :(得分:6)
获取查询集是为了获取特定的对象值而且不可迭代。
user = User.objects.get(id=2)
它为您提供id为2的用户对象。只能有1个id为2的用户
但在您的情况下,可能有许多用户具有员工状态
staff = User.objects.filter(is_staff=True)
这会为您提供员工列表。如果您正在寻找一个对象,那么在查找列表时使用get,然后使用过滤器。
您现在可以在模板中使用此功能
{% for stf in staff %}
{{stf.username}}
{% endfor %}
答案 1 :(得分:3)
使用filter
代替get
。
staff = User.objects.filter(is_staff=True)
答案 2 :(得分:0)
关键是当使用staff = User.objects.get(is_staff=True)
时你不能确定它会返回一个用户(除非你肯定知道)。
您可能希望添加更多条件以将选项缩小为一个。
更安全的选项是用户filter
,它返回一个具有匹配条件的用户列表,而当事情与预期相反时,无需处理objects.get
异常