Django:我如何得到所有员工的查询集?

时间:2015-08-26 03:42:21

标签: python django django-queryset django-orm

Django:我如何获得所有员工的查询集?

我正在尝试:

staff = User.objects.get(is_staff=True)

但得到一个TypeError:

'User' object is not iterable

3 个答案:

答案 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异常