Django - 在不查询数据库的情况下将对象转换为查询集

时间:2017-08-15 22:21:24

标签: django orm

我的Django代码经常发生,我必须使用对象进行一些操作,然后以查询集的形式将其传递给其他函数。现在,我获取对象的id并查询数据库,这似乎是垃圾代码,因为我已经拥有了所有数据。

通过一个例子更好地说明:

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 个答案:

答案 0 :(得分:1)

假设test.html模板需要QuerySet,那么您的代码就可以了。重新获取数据效率很低,但除了通过数据库之外,没有记录的方法来填充QuerySet。

您没有举例test.html,但在很多情况下,您可以跳过QuerySet并改为传递列表,例如:

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