Сортировка по пользовательским upvotes и downvotes не работает должным образом

В настоящее время у меня есть такая модель

class IpAddress(models.Model):
    creado = models.DateTimeField(auto_now_add=True)
    ip_address = models.GenericIPAddressField(unique=True)

class Palabra(models.Model):
    nombre = models.CharField(max_length=250)
    definicion = models.CharField(max_length=1000, unique=True)
    ejemplo = models.CharField(max_length=250)
    creado = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(CustomUser, on_delete=models.SET_NULL, null=True, blank=True)
    anonimo = models.BooleanField(default=True)
    aprobada = models.BooleanField(default=False)
    userUpVotes = models.ManyToManyField(IpAddress, blank=True, related_name='threadUpVotes')
    userDownVotes = models.ManyToManyField(IpAddress, blank=True, related_name='threadDownVotes')
    gramatica = models.CharField(max_length=250, null=True, blank=True)
    pais = models.CharField(max_length=250, null=True, blank=True)

А мои функции ранжирования таковы

        defeniciones = Palabra.objects.prefetch_related(
            'tag_set'
        ).filter(
            nombre__iexact=palabra,
            aprobada=True
        ).annotate(
            total_votes=Count('userUpVotes') / NullIf((Count('userUpVotes') + Count('userDownVotes')), 0)).order_by('-total_votes')

У меня есть ситуация, когда слово имеет два upvotes и ни одного downvotes. Но слово, у которого нет ни upvotes, ни downvotes, занимает более высокое место.

Я использую NullIf из-за postgres.

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