У меня довольно простые модели:
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
- модель для хранения каждого рейтинга, оставленного пользователем.
И чтобы подсчитать рейтинг для некоторого place
, мне нужно получить все ПОСЛЕДНИЕ отзывы пользователей и суммировать все значения рейтинга. Вот код для получения всех последних отзывов каждого пользователя:
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 в качестве базы данных.
Пожалуйста, помогите мне с этой проблемой:)