2017-08-15 67 views
0

它经常发生在我的Django代码中,我必须对对象进行一些操作,然后以查询集的形式将它传递给其他函数。现在,我采用对象的id并查询数据库,这看起来像垃圾代码,因为我已经拥有所有数据。Django - 在不查询数据库的情况下将对象转换为queryset

obj = MyModelSerializer(data) 
obj.save() 
qs = MyModel.objects.filter(id = obj.id).values() # queries db just to get a queryset representation of a single object 
return render(request, 'test.html', {'qs': qs}) 

有没有什么更好的方法来覆盖此代码:

更好的通过一个例子来说明?或者它完全可以吗?

回答

1

假设test.html模板需要一个QuerySet,那么你的代码很好用。重新提取数据效率低下,但除了通过数据库之外,没有书面的方式来填充QuerySet。

你不举一个例子test.html但在很多情况下,你可以跳过查询集,并通过一个列表,而不是,例如:

obj = MyModelSerializer(data) 
obj.save() 
return render(request, 'test.html', {'qs': [obj]}) 
+0

好了,谢谢你的回答,马特。但问题是我真的需要一个QUERY对象) –

+0

欢迎您,Edgar。模板需要哪些方法从QuerySet中需要,也许有一种方法可以使另一个集合代替QuerySet。 –

相关问题