python - Django 的 NotImplementedError:聚合()+不同(字段)未实现
问题描述
我有非常简单的模型:
class Profile(models.Model):
name = models.CharField(max_length=100, unique=True)
age = models.IntegerField(default=18)
class Place(models.Model):
name = models.CharField(max_length=100, blank=True, null=True)
address = models.CharField(max_length=100, blank=True, null=True)
class ProfilePlaceFeedback(models.Model):
profile = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='feedback_set')
place = models.ForeignKey(Place, on_delete=models.CASCADE, related_name='feedback_set')
review = models.TextField(blank=True, null=True)
rating = models.IntegerField(default=0)
timestamp = models.DateTimeField(auto_now_add=True)
ProfilePlaceFeedback
- 是存储用户留下的每个评分的模型。为了计算 some 的评分place
,我需要检索所有LATEST用户反馈并总结所有评分值。这是检索每个用户的所有最后反馈的代码:
place.feedback_set.order_by('profile', '-timestamp').distinct('profile')
但是进行查询:
place.feedback_set.order_by('profile', '-timestamp').distinct('profile').aggregate(Sum(rating))
引发异常:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/PATH_TO_VIRTUALENV/lib/python3.6/site-packages/django/db/models/query.py", line 357, in aggregate
raise NotImplementedError("aggregate() + distinct(fields) not implemented.")
NotImplementedError: aggregate() + distinct(fields) not implemented.
使用 Django 2.0 和 postgresql 作为数据库。
请帮我解决这个问题:)
解决方案
看来您需要这个或类似的东西:
place.feedback_set.values('profile').annotate(rating_sum=Sum(rating)).values('profile','rating_sum').order_by('profile')
推荐阅读
- android - 如何使用 LetterAdapter 在 Android 中制作 CircleLayout
- java - graphql spqr 页面映射异常
- python - 写入文件 .txt
- assembly - 如何修复lldb调试器中的错误#thread错误
- javascript - Range = document.getSelection().getRangeAt(0) 在 Safari 上不起作用
- c - 在 C 中,要在数据库(文件)中存储更多值,输入 int 并调用特定行
- python - 如何使用 selenium 和 python 在 Firefox 中禁用文件下载弹出窗口?
- c++ - 尝试从 dev c++ mingw 4.8.1 中的文件读取时收到分段错误
- oop - Dlang: get names of all superclasses for an instance as array
- gradle - 任务 ':app:processDebugResources'.1 执行失败