【问题标题】:Django Generic List/Detail Class based views基于 Django 通用列表/详细信息类的视图
【发布时间】:2011-12-11 17:54:09
【问题描述】:

我有一个通用 ListView,我的 html 列表中的每个项目都链接到一个 DetailView。

现在我想在每次点击时增加 MyModel(DetailView) 对象“视图”字段(整数字段)。

我在 DetailView 中似乎只有 get_context_data?那么我该如何更新我的模型呢?

n.b.大声思考,这应该是中间件功能吗?

编辑 好吧,看来我确实有 get_object 和 get_queryset 可用,但它们是空的(打印 kwargs).. 还更新上下文数据中的整数字段(这看起来很丑陋和不需要)一键运行 3 次(3、6、9 等)

【问题讨论】:

    标签: python django


    【解决方案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
    

    【讨论】:

    • 好吧,我猜这个模型不是单例的,所以这可以工作,但我仍然想知道中间件是否更好:)
    • 中间件适用于所有请求,不仅对这个视图,它是一定的开销。
    • 我在详细视图中放置的任何打印语句在单击该特定 url 时打印 3 次是否有逻辑原因?
    • 我不知道。也许在其他地方使用了 get_context_data 方法。也许你可以提供一些代码?
    • 这是由 django dev 服务器引起的,它缺少一个 favicon 链接,不知何故这导致服务器再次解析请求..
    猜你喜欢
    • 2013-12-13
    • 2013-10-03
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多