On Thu, Feb 10, 2011 at 2:52 PM, Alex Robbins <[email protected]> wrote: > Do you want the episode with the highest individual score, or the > highest average score? >
I want the links (within that episode) sorted by highest score. (Sorry for no making it clear before) Thank you, Andres > Alex > > On Thu, Feb 10, 2011 at 7:41 AM, Andres Lucena <[email protected]> wrote: >> On Thu, Feb 10, 2011 at 2:29 PM, Alex Robbins >> <[email protected]> wrote: >>> Yeah, you'll definitely want to find some aggregate to do the sorting. >> >> Ok, didn't know it. I'll take a look at it... >> >>> The only way to sort by a custom method is doing an in-python sort, >>> which is going to be much slower than having the db sort for you. >> >> Yeah, I tought so but it seems (to me) the only way of doing this... >> >>> If you post the score models, we could probably help more. >> >> The score models are from django-voting: >> >> http://django-voting.googlecode.com/svn/trunk/voting/models.py >> http://django-voting.googlecode.com/svn/trunk/voting/managers.py >> >> Thanks for the help! >> >> Andres >> >> >>> >>> Alex >>> >>> On Feb 9, 8:49 am, "Casey S. Greene" <[email protected]> wrote: >>>> I haven't used django-voting but it sounds to me like you want something >>>> like: >>>> Link.objects.aggregate(Avg(score = 'vote__score')).order_by('score') >>>> >>>> If I recall correctly you can chain aggregate and order_by. >>>> >>>> Anyway, that example and this link should get you started at >>>> least:http://docs.djangoproject.com/en/dev/topics/db/aggregation/ >>>> >>>> Hope this helps! >>>> Casey >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> On Wed, 2011-02-09 at 10:08 +0100, Andres Lucena wrote: >>>> > On Tue, Feb 8, 2011 at 6:00 PM, Andres Lucena <[email protected]> >>>> > wrote: >>>> > > Dear Gurus, >>>> >>>> > > I've made a custom method for getting the score (from django-voting) >>>> > > for a giving Model: >>>> >>>> > > class Link(models.Model): >>>> > > episode = models.ForeignKey("Episode", related_name="links") >>>> > > url = models.CharField(max_length=255, unique=True, db_index=True) >>>> >>>> > > def __unicode__(self): >>>> > > return self.url >>>> >>>> > > def get_score(self): >>>> > > return Vote.objects.get_score(self)['score'] >>>> >>>> > > Now I want to make a custom manager to getting the top-scored links >>>> > > for the given episode. AFAIK, you can't sort by a custom method, so >>>> > > I'm trying to apply the ordering through sorted(), like this links >>>> > > says: >>>> >>>> > >http://stackoverflow.com/questions/981375/using-a-django-custom-model... >>>> > >http://stackoverflow.com/questions/883575/custom-ordering-in-django >>>> >>>> > > So, what I have now is this: >>>> >>>> > > class LinkGetTopScores(models.Manager): >>>> > > def get_top_score(self): >>>> > > return sorted(self.filter(episode=self.episode), key=lambda n: >>>> > > n.get_score) >>>> >>>> > > class Link(models.Model): >>>> > > episode = models.ForeignKey("Episode", related_name="links") >>>> > > url = models.CharField(max_length=255, unique=True, db_index=True) >>>> > > get_top_score = LinkGetTopScores() >>>> > > .... >>>> >>>> > > So of course this isn't working because of the self.episode stuff... >>>> > > But I've to filter somehow by episode (the ForeignKey), and I don't >>>> > > know how. Is there anyway of doing this?? What I'm doing is right or >>>> > > there would be an easier way of doing this? >>>> >>>> > I noticed that the .filter isn't necesary, so now I have this: >>>> >>>> > class LinkGetTopScores(models.Manager): >>>> > def get_top_score(self): >>>> > return sorted(self.all(), key=lambda n: n.get_score) >>>> >>>> > But it don't sort by score, and I don't know what I'm doing wrong :S >>>> >>>> > Any idea? >>>> >>>> > Thanks, >>>> > Andres >>>> >>>> > > Thank you, >>>> > > Andres >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Django users" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/django-users?hl=en. >>> >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/django-users?hl=en. >> >> > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

