python - Django, ModelManager with a query based on model property -
i have models.py:
class piecemanager(models.manager):     def top_ten(self):         # return self.get_queryset().order_by(total_likes)         # how can first n-items ordered property total_likes?   class piece(models.model):      name = models.charfield(max_length=250)     description = models.textfield(blank=true, null=true)     museum = models.foreignkey(museum, blank=true, null=true)      objects = piecemanager()      @property     def total_likes(self):         return self.likes.count()   class like(models.model):      created_at = models.datetimefield(auto_now_add=true, blank=true, null=true)     piece = models.foreignkey(piece, blank=true, null=true, related_name="likes") how can first -items ordered total_likes property? right way that? there better way? thanks.
as simple search have shown, can't sort result of property or method.
however in case don't need to, since can better , more efficiently aggregation:
from django.db.models import count  self.annotate(likes_count=count('like')).order_by('likes_count') 
Comments
Post a Comment