你好我在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'),将对象强制转换为列表?我为什么需要这个?我很难理解,也许有人可以帮助我并向我解释这里发生了什么。 非常感谢您提前
答案 0 :(得分:3)
User.objects
不会将结果作为queryset返回,而只是对与模型关联的 manager 的引用。
Manager 是一个类对象,它提供了在模型上创建查询和过滤器的所有可用方法。
您只需在拨打all()
,filter
,order_by
,{{1}} ...
甚至可以覆盖管理员自动提供特殊过滤器,或者您也可以在模型中添加额外的管理器,以根据上下文使用不同的过滤器/查询。
文档:
答案 1 :(得分:0)
我们需要遍历查询结果,因此我们必须提供objects.all()或objects.order_by('name')