Xonal
Xonal

Reputation: 1360

Get all object from Django ForeignKey Field

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

Answers (1)

karthikr
karthikr

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

Related Questions