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)

Пока кодирую здесь, я совершенно не знаю, как продолжить, любой друг может помочь?

Вернуться на верх