Django:如何获取所有员工用户的查询集?
Django: how do I get a queryset of all users that are staff?
Django:如何获取所有员工用户的查询集?
我正在尝试:
staff = User.objects.get(is_staff=True)
但出现类型错误:
'User' object is not iterable
使用 filter
代替 get
。
staff = User.objects.filter(is_staff=True)
get in a queryset是获取具体的对象值,不可迭代
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 %}
重点是在使用 staff = User.objects.get(is_staff=True)
时,您无法确定它是否会 return 单个用户(除非您确定)。
您可能想要添加更多条件以将选项缩小到一个。
一个更安全的选择是用户 filter
,它 return 是符合条件的用户列表,当事情与预期不符时不需要异常处理 objects.get
get 用于返回单个对象 - 而不是查询集。如果它 returns 来自数据库的多个条目,它将给出一个错误。在您的情况下,我猜它返回的是单个用户,而您正在尝试对其进行迭代。
filter 是您要使用的。它 returns 一个可以迭代的查询集。
staff = User.objects.filter(is_staff=True)
for person in staff :
do stuff....
Django:如何获取所有员工用户的查询集?
我正在尝试:
staff = User.objects.get(is_staff=True)
但出现类型错误:
'User' object is not iterable
使用 filter
代替 get
。
staff = User.objects.filter(is_staff=True)
get in a queryset是获取具体的对象值,不可迭代
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 %}
重点是在使用 staff = User.objects.get(is_staff=True)
时,您无法确定它是否会 return 单个用户(除非您确定)。
您可能想要添加更多条件以将选项缩小到一个。
一个更安全的选择是用户 filter
,它 return 是符合条件的用户列表,当事情与预期不符时不需要异常处理 objects.get
get 用于返回单个对象 - 而不是查询集。如果它 returns 来自数据库的多个条目,它将给出一个错误。在您的情况下,我猜它返回的是单个用户,而您正在尝试对其进行迭代。
filter 是您要使用的。它 returns 一个可以迭代的查询集。
staff = User.objects.filter(is_staff=True)
for person in staff :
do stuff....