Как использовать order_by с пользовательской функцией в модели

В модели MemberProduct у меня есть функция get_member_rating, где пользователь может выставить оценку своему продукту. Поэтому в представлении я хочу отсортировать рейтинги продуктов этого пользователя, используя функцию в MemberProduct или любым другим способом можно сделать набор запросов тогда order_by member_rating.

MemberProduct model

class MemberProduct(TimeStampedModel):
    member = models.ForeignKey(
        "accounts.Member",
        related_name="member_product",
        on_delete=models.CASCADE,
    )
    product = models.ForeignKey(
        Product, related_name="member_product", on_delete=models.CASCADE
    )

    <some other fields>
    
    class Meta:
        unique_together = (
            "member",
            "product",
        )

    def get_member_rating(self):
        try:
            vote = Vote.objects.get(member=self.member, product=self.product)
        except Vote.DoesNotExist:
            return None
        else:
            return vote.rating

Модель голосования

class Vote(models.Model):
    rating = models.FloatField(
        validators=[MinValueValidator(0), MaxValueValidator(10)]
    )
    product = models.ForeignKey(
        Product, related_name="votes", on_delete=models.CASCADE
    )
    member = models.ForeignKey("accounts.Member", on_delete=models.CASCADE)

    class Meta:
        unique_together = ["product", "member"]
Вернуться на верх