2014-03-01 60 views
0

我是新來的Django & python,並努力拼湊在一起。我無法從我的數據庫讀取值並填充到模板中。無法讀取值django queryset

Q1)

在本地變量部分,我看到我的變量作爲<TblManufacturer: object....>和在作爲關鍵值對倍 。有人能告訴我如何從中讀取數值嗎?我試過object.get(key)哪個沒有用。

models.py:

class Tblmanufacturer(models.Model): 
    manufacturerid = models.IntegerField(db_column='manufacturerID', primary_key=True) 
    manufacturername = models.CharField(db_column='manufacturerName', unique=True) 
    createdon = models.DateTimeField(db_column='CreatedOn') 
    class Meta: 
    managed = False 
    db_table = 'tblmanufacturer' 

inspectdb創建的模型文件給我。

>>> lstMan = Tblmanufacturer.objects.values('manufacturername').filter(manufacturerid=1) 
>>> print lstMan 
>>> [{'manufacturername': u'Nokia'}] 

我該如何閱讀諾基亞?以及如何從queryset對象讀取成員值? <TblManufacturer object... >

Q2)是否必須使用__unicode__()方法?爲什麼要使用?我閱讀djangbook和docs,似乎無法阻止它。 :(

非常感謝

回答

0

Q1 lstMan作品像列表使用索引來獲得的第一個項目(一dictinoary);。然後用另一個指標來從字典中的值

>>> lstMan = [{'manufacturername': u'Nokia'}] 
>>> lstMan[0]['manufacturername'] 
u'Nokia' 

Q2。嘗試用下面的代碼/無__unicode__定義。你將根據__unicode__1存在得到不同的結果。

print unicode(Tblmanufacturer.objects.get(manufacturerid=1)) 
  • >>> class KlassWith__unicode__(object): 
    ...  def __unicode__(self): 
    ...   return u'Klass Object!' 
    ... 
    >>> class KlassWithout__unicode__(object): 
    ...  pass 
    ... 
    >>> print unicode(KlassWithout__unicode__()) 
    <__main__.KlassWithout__unicode__ object at 0x0000000002A37780> 
    >>> print unicode(KlassWith__unicode__()) 
    Klass Object! 
    
+0

嘿感謝。我能夠以這種方式檢索價值。當我試圖做同樣的事情時, >>> lMan = Tblmanufacturer.objects.all() >>> lMan [] >>> lMan [0] >>> lMan [0] ['manufacturerid'] Traceback ): 文件「」,第1行,在 TypeError:'Tblmanufacturer'對象沒有屬性'__getitem__' 得到一些錯誤。當我最初得到一個專欄時,我正在做select * here。不知道什麼是錯的 – GopinathR

+0

@GopinathR,你在問題代碼中使用了'values()',而沒有在評論代碼中使用它。 'values()'產生字典。沒有'values()',它會產生Model實例。所以它應該稍微修改:'lstMan [0] .manufacturername' – falsetru

+0

@GopinathR,歡迎來到堆棧溢出!如果這對你有幫助,你可以通過接受答案告訴社區(http://meta.stackexchange.com/a/5235)。 – falsetru