当稍后在 get/post 中调用 self.get_object()
时,是否有一种既定的方法可以在不进行额外的数据库调用的情况下验证分派(dispatch)中的对象?
这是我到目前为止的内容(针对这个问题略有改动):
class CourseUpdateView(UpdateView):
def dispatch(self, request, *args, **kwargs):
self.request = request
self.kwargs = kwargs
self.object = self.get_object()
if self.object.is_online:
messages.warning(request, "Sorry this one can't be updated")
return redirect("course:detail", pk=self.kwargs['pk'])
# this is going to call self.get_object again isn't it?
return UpdateView.dispatch(self, request, *args, **kwargs)
最佳答案
您可以缓存 get_object()
的结果。
这是一个简单的例子:
class CourseUpdateView(UpdateView):
# [...] your dispatch method
def get_object(self):
# it doesn't matter how many times get_object is called per request
# it should not do more than one request
if not hasattr(self, '_object'):
self._object = super(CourseUpdateView, self).get_object()
return self._object
关于python - 基于 Django 类的 View : Validate object in dispatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14836913/