2014-03-01 57 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