Reputation: 1360
I have two models, an Event and a suggestedName. suggestedName has a ForeignKey relationship with Event as well as a IntegerField called 'votes'. I want to get the top 5 suggestedNames associated with an Event.
My models:
class Event(models.Model):
def __unicode__(self):
return unicode(self.id)
id = models.BigIntegerField(blank = 'TRUE', primary_key='TRUE')
version = models.IntegerField(default = 0)
views = models.IntegerField(default = 0)
created = models.DateTimeField(editable = False)
modified = models.DateTimeField()
trained = models.BooleanField(default = False)
type = models.SmallIntegerField(default = 0)
class suggestedName(models.Model):
def __unicode__(self):
return self.name
name = models.CharField(max_length=200, blank = 'TRUE', null = 'TRUE')
votes = models.IntegerField(default = 0)
event = models.ForeignKey(Event)
What I have in my view is this:
e = Event.objects.get(pk=event_id)
suggestedN = e.suggestedName_set.order_by('votes')[:5].reverse()
But I'm not getting any results.
Upvotes: 1
Views: 3333
Reputation: 99670
Try:
e.suggestedname_set.order_by('-votes')[:5]
Or specify a related name
class suggestedName(models.Model):
def __unicode__(self):
return self.name
name = models.CharField(max_length=200, blank = True, null = True)
votes = models.IntegerField(default = 0)
event = models.ForeignKey(Event, related_name='suggestions')
and then,
e.suggestions.order_by('-votes')[:5]
Upvotes: 3