Django REST Framework как агрегировать данные из связанных моделей
У меня есть 3 модели:
class Book_type(models.Model):
type_name = models.CharField(max_length=40,unique=True)
class Author(models.Model):
author_id = models.AutoField(unique=True, primary_key=True)
author_name = models.CharField(max_length=30, unique=True)
class Book(models.Model):
book_id = models.AutoField(unique=True, primary_key=True)
book_type = models.ForeignKey(book_type, on_delete=models.CASCADE,
to_field='type_name')
book_value = models.PositiveIntegerField(default=0, verbose_name='book value')
book_unit = models.CharField(max_length=100, blank=True,
verbose_name='book unit')
book_time = models.DateTimeField(auto_now=False, verbose_name='book time')
author = models.ForeignKey(verbose_name='author', to='author', to_field='author_id', on_delete=models.CASCADE)
Как тип книги, так и автор являются внешними ключами к Book.
Теперь в файле views.py я хочу вернуть следующую совокупную статистику для каждого автора:
минимальная стоимость книги, сгруппированная по автору и типу книги средняя стоимость книги, сгруппированная по автору и типу книги И аннотируйте каждый набор агрегированной статистики идентификатором и именем автора.
Код:
from .serializers import BookSerializer,AuthorSerializer,Book_typeSerializer
class AggregateListView(ListAPIView):
queryset = Book.objects.all()
serializer_class = BookSerializer
def get_queryset(self):
mininum_qs = self.get_queryset().min(book_value)
average_qs = self.get_queryset().average(book_value)
return new_qs.union(mininum_qs, average_qs, all=True)
Пока кодирую здесь, я совершенно не знаю, как продолжить, любой друг может помочь?