Django 模型设置@property过滤器并将其显示在模板上



我有需要计数并显示没有博客的用户的情况。

这是我的views.py

class Blog(models.Model):
desc = models.TextField(blank=True, null=True)
user = models.ForeignKey(Employee, null=True, on_delete=models.CASCADE, related_name='blogs')
@property
def DOESN_HAVE_BLOG(self):
blog = Self.Blog.all().values_list('user', flat=True)
value = Self.User.exclude(id__in=blog)
return value

这里mytemplate.html

{{ DOESN_HAVE_BLOG.count }}

但它不起作用

这不是您作为模型属性会做的事情。属性与博客的实际实例相关,但您正在寻找根本没有实例的员工。

相反,您应该在视图中单独执行查询 - 一个好地方是在get_context_data中。

class MyView(ListView):
...
def get_context_data(self, *args, **kwargs):
data = super().get_context_data(*args, **kwargs)
data['DOESN_HAVE_BLOG'] = Employee.objects.filter(blog=None)
return data

最新更新