2013-07-19 36 views
1

我有两个模型,一个Event和一个suggestedName。 suggestedName与Event具有ForeignKey关系,并且具有称为“票”的IntegerField。我想获得与事件关联的前5个建议名称。从Django ForeignKey字段获取所有对象

我的模型:

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) 

我有我的看法是这样的:

e = Event.objects.get(pk=event_id) 

suggestedN = e.suggestedName_set.order_by('votes')[:5].reverse() 

但我没有得到任何结果。

+2

你为什么要设置'primary_key'场可为空? – karthikr

+0

糟糕。是的,我会解决这个问题,但我不认为这是问题所在。 – Xonal

回答

3

尝试:

e.suggestedname_set.order_by('-votes')[:5] 

,或者指定相关的名称

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') 

然后,

e.suggestions.order_by('-votes')[:5] 
+0

什么都没有。如果我将其设置为e.suggestedName_set.all(),将不会工作。我也意识到我忘了在我的问题中添加一个可能相关的阵容。一秒 – Xonal

+0

然后非常清楚,你没有与事件相关的数据。转到django管理控制台并尝试添加一些数据 – karthikr

+0

我这样做。目前有2个建议名称,并且都与相关事件相关联。 – Xonal

相关问题