2015-05-07 60 views
1

我正在使用Django的外部數據庫。我已經編寫了一個腳本來填充數據庫。我能夠通過syncdb訪問這些數據,並且爲這些數據創建了一個模型。數據必須被設置爲像

我能夠打印整個數據庫,但使用:

TicketOdds.objects.all()[0] 

引發以下異常:

ValueError異常在/

數據必須查詢集樣(有計和order_by)或支持列表(數據) - TicketOdds沒有

我的模式是:

class TicketOdds(models.Model): 
    #id = models.AutoField(primary_key=True) 
    price = models.IntegerField(blank=True, null=True) 
    ticket_name = models.TextField(blank=True, null=True) 
    ticket_id = models.IntegerField(primary_key=True, blank=True, null=False) 
    odds = models.FloatField(blank=True, null=True) 
    img_url = models.TextField(blank=True, null=True) 
    ticket_url = models.TextField(blank=True, null=True) 

    class Meta: 
     managed = False 
     db_table = 'ticket_odds' 

    def __iter__(self): 
     for i in xrange(100): 
      yield i 

    def __getitem__(self): 
     return unicode(self) 

我怎麼添加到模型中,使其「查詢集樣」?我嘗試添加

def __iter__ (self): 

針對特定目的... 我必須失去了一些東西。

+0

從我可以看到你已經成功地在你的db('.all()')中用'TableData()'使用所有的值,但是你試圖將它傳遞給一個單獨的對象('。 all()[0]'),這會導致該錯誤。你想達到什麼目的? – Claudiu

回答

2

由於您未發佈完整的回溯錯誤消息。我只會引導您一起回答您的問題。

  1. 看看source code。當TableData(data, table)中的data不可迭代時,它會引發此錯誤。即沒有定義__iter__
  2. 我懷疑你需要在你的ModelModel.Meta定義__iter__方法,因爲QuerySet這是當你作出這一呼籲的迭代類可以檢索:TicketOdds.objects.all()
  3. 傳遞data與查詢集您先前在檢索使TableData(data, table)

實施例:

TableData(TicketOdds.objects.all(), table) 

什麼我添加到模型,使其「查詢集樣」?

您不會讓您的模型變得像「queryset-like」,而是您可以使用上述示例從模型中獲取QuerySet

+0

首先,我以前沒有看到過這樣的模式。我沒有使用'django-tables2'。這可能只是一個部分答案或不正確的答案,但我希望你可以試試這個,讓我們知道它是否有效。 – Yeo

+0

超級noob問題...如何獲得追溯錯誤消息? manage.py shell? –

+0

通常,當「DEBUG = True」時,它們將打印任何錯誤請求到頁面本身,即「黃色」彩色頁面。打印的信息之一是「追溯」部分。 http://i.imgur.com/TWL6f.png – Yeo

相關問題