首页 > 解决方案 > django get_object() 被多次调用

问题描述

我有一个模型Article- ,这个代码片段

class ArticleDetailView(HitCountDetailView):
    model = Article
    # some code...
    
    def get_object(self):
        article = super(ArticleDetailView, self).get_object()
        slug = self.kwargs['slug']
        article = get_object_or_404(Article, slug=slug)
        
        print(article.some_count.counts)
        
        return article

此代码行打印article.some_count_counts3 次的值,这意味着该函数get_object()被调用了 3 次。

为什么会这样?那是我的问题。

标签: pythondjangoclassdjango-views

解决方案


只需删除该get_object()方法。

DjangoDetailView本身可以通过slug字段获取对象。
所以再次调用该函数是多余的。

支持文档:
https ://docs.djangoproject.com/en/3.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.slug_url_kwarg


推荐阅读