how to create an empty queryset and to add objects manually in django 
我需要创建一个查询集,并手动添加从不同查询结果中获得的一些对象,以便将其显示在表中。我使用xx=set(),但它不起作用。
		
		
- 你能出示相关代码吗?
- 如何创建空查询集:docs.djangoproject.com/en/dev/ref/models/queryset/none
- 如何向其中添加对象?
- 你说"一些对象"是对以前的查询集的成员进行评估,还是仅仅是指你想链接在一起的"各种查询集"?
- 要在表中显示的各种查询集结果
- 此答案可能有帮助:链接
- 我不明白为什么这个问题会有这么多的赞成票——甚至不清楚这个人在问什么。
- 你能完成吗?甚至我想传递一个自定义列表而不是一个查询列表。
 
	 
您可以使用以下方法之一进行此操作:
| 12
 3
 4
 5
 6
 
 | from itertools import chain#compute the list dynamically here:
 my_obj_list = list(obj1, obj2, ...)
 #and then
 none_qs = MyModel.objects.none()
 qs = list(chain(none_qs, my_obj_list))
 | 
你也可以这样做:
| 12
 
 | none_qs = MyModel.objects.none()qs = none_qs | sub_qs_1 | sub_qs_2
 | 
号
但是,这对于切片查询集不起作用。
		
		
- 如何动态添加?
- 动态创建一个列表,然后一次附加它。
- 实际上,你不需要noneqs。您可以简单地创建一个列表并在上下文中传递它。
- 不工作。类型(qs)=列表
- @DZ210你想做什么?=是赋值,=是相等检查。
- @Karthikr我试图从对象列表中手动创建一个查询集。我的评论有点简明扼要。qs的类型仍然是您给出的第一个代码示例中的一个列表-现在看它应该是显而易见的。
- 你能完成吗?甚至我想传递一个自定义列表而不是一个查询列表。我不能用链式法工作。
- 你能完成吗?甚至我想传递一个自定义列表而不是一个查询列表。我不能使用这个列表方法工作。它在管理视图中给了我一个valueerror。我在filter>queryset(self, request, queryset)中使用这个自定义列表是一个已创建的列表,而不是一个查询集
 
	 
你不能那样做。查询集是数据库查询的表示形式。不能手动向其中添加项目。
但是,如果需要任意排序的模型实例集合,只需使用一个列表。
		
		
- 列表有问题,无法在从模型创建的表上显示它
- 我不知道那是什么意思。显示一些代码。
- 对于x x中的x:query=xx.objects.filter(id=x.id)lisst.append(query)table=getxtable(lisst)
- 我是不是应该猜一下getXtable是什么,或者为什么它不起作用?
- 你能完成吗?甚至我想传递一个自定义列表而不是一个查询列表。我不能使用这个列表方法工作。它在管理视图中给了我一个valueerror。我在filter>queryset(self, request, queryset)中使用这个自定义列表是一个已创建的列表,而不是一个查询集
 
	 
我真的迟到了,但是为了将来的参考,您可以为具有特定属性的对象创建一个带有all-then过滤器的查询集。
筛选字段对象属性
| 12
 
 | Model.objects.filter(foo='bar')Model.objects.exclude(foo='bar')
 | 
筛选非字段对象属性
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | def return_queryset_with_desired_objects(self):qs = SomeModel.objects.all()
 wanted_ids = [obj.id for obj in qs if obj.foo]
 return self.filter(id__in=wanted_ids]
 
 def return_queryset_without_undesired_objects(self):
 qs = SomeModel.objects.all()
 unwanted_ids = [obj.id for obj in qs if not obj.foo]
 return self.exclude(id__in=unwanted_ids]
 | 
。
		
		
- unwanted_ids = [obj.id for obj in qs if not obj.foo]意味着大量访问数据库。试试unwanted_ids=SomeModel.objects.filter(foo=False).values_list('id', flat=True)。
- @我澄清了我的答案。希望它现在更有意义!
- 我仍然认为您所做的列表理解会将对象带到python端,可能只需要一次,但带上整个对象对数据库来说要比带一个values_list更重要。
- @Mehmet不能在值列表上调用方法。