首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与Queryset.annotate()混淆

与Queryset.annotate()混淆
EN

Stack Overflow用户
提问于 2017-06-21 05:05:39
回答 1查看 298关注 0票数 0

我有两个模型:

代码语言:javascript
复制
class Property(models.Model):
    # code here...

class AccommodationType(models.Model):
    property = models.ForeignKey(Property, related_name='accommodation_types')
    # rest of code here...

我要尝试的是用相关的AccommodationType的计数来注释属性的queryset,并根据这个计数的值对其进行过滤。下面是我的代码:

代码语言:javascript
复制
qs = Property.objects.all()
qs.annotate(acc_types_count=Count('accommodation_types'))
filtered = qs.filter(acc_types_count=1)

这里我得到了错误:

代码语言:javascript
复制
django.core.exceptions.FieldError: Cannot resolve keyword 'acc_types_count' into field. Choices are:  # ...rest of the fields

我哪里错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-21 05:32:53

filter一样,annotate不会改变查询集,但会返回一个新的查询集。您需要将其重新分配给qs

代码语言:javascript
复制
qs.annotate(acc_types_count=Count('accommodation_types'))

或者将其与原始查询相结合:

代码语言:javascript
复制
qs = Property.objects.all().annotate(acc_types_count=Count('accommodation_types'))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44662981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档