Python Django从查询中排除项目
我有一个名为most_viewed的查询集,它是一个只包含一个元素的列表。我想在其他文章部分排除这一点,因为这将在主要部分。我收到的错误是“没有足够的值来解包”。以下是我的观点代码。我该如何着手解决这个问题Python Django从查询中排除项目,python,html,django,Python,Html,Django,我有一个名为most_viewed的查询集,它是一个只包含一个元素的列表。我想在其他文章部分排除这一点,因为这将在主要部分。我收到的错误是“没有足够的值来解包”。以下是我的观点代码。我该如何着手解决这个问题 def home_view(request): title = 'Home' most_viewed = Post.objects.order_by('-views')[0:1] articles = Post.objects.all().exclude(most_v
def home_view(request):
title = 'Home'
most_viewed = Post.objects.order_by('-views')[0:1]
articles = Post.objects.all().exclude(most_viewed).order_by('-date_posted')[0:3]
查看最多的
是一个查询集(包含零项或一项),因此您可以通过以下方法排除此项:
def主视图(请求):
标题=‘家’
most_view=Post.objects.order_by('-views')[0:1]
articles=Post.objects.exclude(
id\uuuu in=查看的最多
).order_by('-date_posted')[0:3]
或者,您可以通过以下两个查询完成此操作:
def home_view(request):
title = 'Home'
most_viewed = Post.objects.order_by('-views').values('pk').first()
articles = Post.objects.exclude(
id=most_viewed
).order_by('-date_posted')[0:3]
def主视图(请求):
标题=‘家’
most_view=Post.objects.order_by('-views').values('pk').first()
articles=Post.objects.exclude(
id=查看的最多
).order_by('-date_posted')[0:3]
如果没有Post
对象,这也是安全的,因为most\u-views
是None
,所以不会出错。most\u-views
是一个查询集(包含零项或一项),因此您可以使用以下选项排除此项:
def主视图(请求):
标题=‘家’
most_view=Post.objects.order_by('-views')[0:1]
articles=Post.objects.exclude(
id\uuuu in=查看的最多
).order_by('-date_posted')[0:3]
或者,您可以通过以下两个查询完成此操作:
def home_view(request):
title = 'Home'
most_viewed = Post.objects.order_by('-views').values('pk').first()
articles = Post.objects.exclude(
id=most_viewed
).order_by('-date_posted')[0:3]
def主视图(请求):
标题=‘家’
most_view=Post.objects.order_by('-views').values('pk').first()
articles=Post.objects.exclude(
id=查看的最多
).order_by('-date_posted')[0:3]
如果没有Post
对象,这也是安全的,因为most\u-view
是None
,所以它不会出错。尝试。排除(id=most\u-view.id)
“QuerySet”对象没有属性“id”,我想,因为查看最多的是一个列表,它设置了这个错误。我通过执行[0]来修复它!谢谢是的,因为你有一张清单。对不起,我没注意。如果您想以“django”的方式执行此操作,您可以使用first()
而不是[0],但如果您的解决方案没有问题,则可以使用[0]。请尝试。排除(id=most\u views.id)
“QuerySet”对象没有属性“id”,我想,因为查看最多的是一个列表,它会设置此错误。我通过执行[0]来修复它!谢谢是的,因为你有一张清单。对不起,我没注意。如果您想用“django”的方式进行操作,可以使用first()
而不是[0],但如果您的解决方案还可以的话。