User.py异常类型:TypeError异常值:'Manager'对象不可迭代

时间:2017-10-02 21:29:11

标签: python django

你好我在Django有一点问题,我创建了一个数据库,现在我想打印这个查询,所以我在我的user.py文件中有以下代码

def user(request):
user_list = User.objects
user_dict = {'user_data': user_list}



return render(request,'AppTwo/User.html',context=user_dict)

这里我收到以下错误: User.py异常类型:TypeError异常值:'Manager'对象不可迭代。

要解决此问题,我需要将代码更改为:

def user(request):
user_list = User.objects.order_by('first_name')
user_dict = {'user_data': user_list}



return render(request,'AppTwo/User.html',context=user_dict)

但我无法理解为什么简单添加order_by('first_name'),将对象强制转换为列表?我为什么需要这个?我很难理解,也许有人可以帮助我并向我解释这里发生了什么。 非常感谢您提前

2 个答案:

答案 0 :(得分:3)

User.objects不会将结果作为queryset返回,而只是对与模型关联的 manager 的引用。

Manager 是一个类对象,它提供了在模型上创建查询和过滤器的所有可用方法。

您只需在拨打all()filterorder_by,{{1}} ...

时调用methods来获取查询集

甚至可以覆盖管理员自动提供特殊过滤器,或者您也可以在模型中添加额外的管理器,以根据上下文使用不同的过滤器/查询。

文档:

答案 1 :(得分:0)

我们需要遍历查询结果,因此我们必须提供objects.all()或objects.order_by('name')