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
我正在尝试从我的模型中查询和注释一些数据:
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