Django通用列表/详情类视图
我有一个通用的列表视图,每个列表里的项目都链接到一个详细视图。
现在我想在每次点击时,让我的模型(详细视图)中的“views”字段(一个整数)加一。
在详细视图中,我好像只有 get_context_data 这个方法可以用。那么我该怎么在这个操作中更新我的模型呢?
顺便说一下,我在想,这是不是应该是中间件的功能呢?
编辑
好的,看来我确实可以使用 get_object 和 get_queryset,但它们是空的(打印出来的参数为空)。而且在上下文数据中更新这个整数字段(感觉很丑陋也不想这样做)在一次点击时会运行三次(3、6、9等等)。
1 个回答
1
你确实可以在 get_object 方法里这样做:
class YourView(DetailView):
queryset = YourModel.objects.all()
def get_object(self):
object = super(YourView, self).get_object()
object.views = object.views + 1
object.save()
return object