我的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})
有没有更好的方法来覆盖这段代码?或者它完全没问题?
答案 0 :(得分:1)
假设test.html
模板需要QuerySet,那么您的代码就可以了。重新获取数据效率很低,但除了通过数据库之外,没有记录的方法来填充QuerySet。
您没有举例test.html
,但在很多情况下,您可以跳过QuerySet并改为传递列表,例如:
obj = MyModelSerializer(data)
obj.save()
return render(request, 'test.html', {'qs': [obj]})