Django Model使用过滤器设置@property并在模板上显示它

时间:2018-05-24 19:08:29

标签: python django

我有案例需要统计并显示没有博客的用户。

这是我的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 }}

但它不起作用

1 个答案:

答案 0 :(得分:1)

这不是您作为模型属性所做的事情。属性与Blog的实际实例有关,但您正在寻找具有 no 实例的Employees。

相反,您应该在视图中单独执行查询 - 这是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