Django запрос, который вычисляет наиболее активные посты по симпатиям и антипатиям, а также по каждой категории

Я хочу вычислить самый популярный пост по каждой категории, но у меня возникает ошибка DISTINCT ON fields is not supported by this database backend.

после я использую PostgreSql, но у меня также возникла ошибка. аннотация и distinct вместе не работают

модель -->

class Category(models.Model):
    title = models.CharField(max_length=150, verbose_name=_("კატეგორია"))

    def __str__(self):
        return self.title


class Question(models.Model):
    user = models.ForeignKey(
        User, on_delete=models.CASCADE, verbose_name=_("მომხმარებელი")
    )
    category = models.ManyToManyField(Category)
    title = models.CharField(max_length=150, verbose_name=_("სათაური"))
    body = models.TextField(verbose_name=_("ტექსტი"))
    image = models.ImageField(blank=True, null=True, verbose_name=_("ფოტო"))
    link = models.URLField(
        max_length=400,
        blank=True,
        null=True,
        validators=[RequireHttpOrHttpsUrl()],
        verbose_name=_("ლინკი"),
    )
    time = models.DateTimeField(auto_now=True)
    send_notification = models.BooleanField(
        default=True, verbose_name=_("გავაგზავნოთ შეტყობინება?")
    )

    def __str__(self):
        return self.title

class LikeDislike(models.Model):
    user = models.ForeignKey(
        User, on_delete=models.CASCADE, verbose_name=_("მომხმარებელი")
    )
    question = models.ForeignKey(
        Question, on_delete=models.CASCADE, verbose_name=_("კითხვა")
    )
    point = models.BooleanField()
    time = models.DateTimeField()

    def __str__(self):
        return self.question.title

view ->

class CountLikeByCategory(generics.ListCreateAPIView):
    serializer_class = CountLikeByCategorySerializer

    def get_queryset(self):
        query=Question.objects.values_list(
            'category__title','title'
        ).annotate(
            l=Count('likedislike',filter=Q(likedislike__point=1)),
            d=Count('likedislike',filter=Q(likedislike__point=0)),
            total=F('l')+F('d'),
        ).order_by('category', '-total').distinct('category')
        return query
Вернуться на верх