Django - 'WhereNode' 对象没有属性 'output_field' 错误

Django - 'WhereNode' object has no attribute 'output_field' error

我正在尝试从我的模型中查询和注释一些数据:

class Feed(models.Model):     # Feed of content
    user = models.ForeignKey(User, on_delete=models.CASCADE)

class Piece(models.Model):    # Piece of content (video or playlist)
    removed = models.BooleanField(default=False)
    feed    = models.ForeignKey(Feed, on_delete=models.CASCADE)
    user    = models.ForeignKey(User, on_delete=models.CASCADE)

其他字段在以下查询中没有用到,所以我在这里跳过它们。

在我看来,我需要获取经过身份验证的用户的所有提要的查询集。注释应包含所有未移除的零件的数量。

最初,Piece 模型不包含 removed 字段,并且一切都适用于查询集,如下所示:

Feed.objects.filter(user=self.request.user).annotate(Count('piece'))

但后来我将字段 removed 添加到 Piece 模型,并且只需要计算未 删除的部分 :

Feed.objects.filter(user=self.request.user)
            .annotate(Count('piece'), filter=Q(piece__removed=False))

它给了我以下错误:

'WhereNode' object has no attribute 'output_field'

这只是 django 在错误页面上输出的一小部分,所以如果还不够,请让我知道我的问题中还需要包括什么。

我尝试将 output_field 包含在 models.IntegerField()models.FloatField() 等选项(正确导入)中,但出现了一些错误,我没有在此处提供,因为我相信这些操作没有意义。

我正在使用 Django 2.0.3

你的语法错误在这里,

Feed.objects.filter(user=self.request.user)
            .annotate(Count('piece', filter=Q(piece__removed=False)))

过滤器需要在 Count 而非 annotate 应用。

Django 文档中的引用: https://docs.djangoproject.com/en/2.1/topics/db/aggregation/#filtering-on-annotations