我有两种模式:
class Property(models.Model):
# code here...
class AccommodationType(models.Model):
property = models.ForeignKey(Property, related_name='accommodation_types')
# rest of code here...
我想要的是使用相关的AccommodationType的数量来注释Property的查询集,并使用此计数的值对其进行过滤。所以这是我的代码:
qs = Property.objects.all()
qs.annotate(acc_types_count=Count('accommodation_types'))
filtered = qs.filter(acc_types_count=1)
在这里我得到了错误:
django.core.exceptions.FieldError: Cannot resolve keyword 'acc_types_count' into field. Choices are: # ...rest of the fields
我哪里错了?
答案 0 :(得分:1)
[XmlText]
与annotate
一样,不会改变查询集,但会返回一个新查询集。您需要将其重新分配给filter
:
qs
或者将其与原始查询结合使用:
qs.annotate(acc_types_count=Count('accommodation_types'))