我正在尝试查询和注释我的模型中的一些数据:
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'))
但是后来我给Piece
模型增加了字段removed
,并且需要计算没有被标记为已移除的棋子数量:
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)))
。 - Anup Yadav