这是我的观点:
class viewbloglistview(LoginRequiredMixin,ListView):
model = Blog
paginate_by = 6
def get_template_names(self):
if True:
return ['blog/view_blogs.html']
else:
return ['blog/blog_list.html']
def get_queryset(self):
return Blog.objects.all().order_by('-blog_views')[:20]
def get_context_data(self, **kwargs):
context = super(viewbloglistview, self).get_context_data(**kwargs)
context['categories_list'] = categories.objects.all()
return context
这是我在models.py文件中的功能:
def categories_count(self):
categories_count = categories.objects.annotate(blog_count=Count('blogs')).values_list('Title','blog_count')
return categories_count
我想使用上下文名称在视图中调用该函数以在模板中呈现活动。
有人可以帮我解决这个问题吗?
谢谢
答案 0 :(得分:0)
这是一个python问题,您的问题尚不清楚,但基于您所说的内容:
仅在您的model.py中使用该功能:
from . import model.py
// code
categories_count()
该函数是类中的一个方法,如代码中所显示的那样,其中包含self参数:
from . import model.py
// code
classname.categories_count()
答案 1 :(得分:0)
假设您已将您的课程命名为“类别”(应该首先将其命名为“类别”),
在类级别进行查询时,categories_count应该已经在管理器中。假设您不需要管理者,并且希望将代码保留在模型中,那么可以将其用作类方法。
@classmethod
def categories_count(cls):
return cls.objects.annotate(blog_count=Count('blogs')).values_list('Title','blog_count')
,并且在视图中将其用作
categories.categories_count()
请记住,带有'self'参数的常规方法(如您所拥有的常规方法)应仅在处理单个实例时使用,而不是在访问类本身时使用。