Django通用列表/详情类视图

1 投票
1 回答
605 浏览
提问于 2025-04-17 04:41

我有一个通用的列表视图,每个列表里的项目都链接到一个详细视图。

现在我想在每次点击时,让我的模型(详细视图)中的“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

撰写回答