2013-07-19 39 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

相關問題