gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:56:44 26 4
gpt4 key购买 nike

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

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)

在以下查询中未使用其他字段,因此在此跳过了它们。

在我看来,我需要获取经过身份验证的用户的所有供稿的queryset。批注应包含未删除的所有部分的数量。

最初, Piece模型不包含 removed字段,并且一切都可以与queryset一起运行,如下所示:
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_fieldmodels.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

关于Django- 'WhereNode'对象没有属性 'output_field'错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49643502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com