2014-03-01 52 views
1

我正在使用Django(1.5.4),Python(2.7),sqlite3。經理不能通過博客實例訪問

我想在sqlite3數據庫中保存我的用戶詳細信息。我的代碼是這樣的;

這是models.py文件。

from django.db import models 

class Blog(models.Model): 
    name = models.CharField(max_length=100) 
    tagline = models.TextField() 

    def __unicode__(self): 
     return self.name 

這是我views.py文件

def shiva(request): 
    b = Blog(name='Itons Blog', tagline='All the best to Iton team') 
    b.save() 
    print [e.name for e in b.objects.all()] 
    return HttpResponse("saved") 

當我試圖保存sqlite3的錯誤的細節如來;

AttributeError at/Manager isn't accessible via Blog instances

+0

我通過保持這個答案得到了答案,「print [e.name for e in Blog.objects.all()]」。只是保留了博客來代替b。 – Shiva

回答

5

您的問題是在這條線:

print [e.name for e in b.objects.all()] # won't work 

bBlog實例,這將無法訪問對象管理器。你可以試試這個,而不是(如果你希望所有的行,它因爲您是使用多個名稱的列表會出現你這樣做):

print [e.name for e in Blog.objects.all()] 

注意在Blog.objects.all()使用Blog代替b。對象管理器無法通過b訪問,但可通過類Blog訪問。

有關進一步說明(使用與您很相似的示例),see the docs here

+0

我通過保留這個答案得到了答案:print [e.name for e in Blog.objects.all()]只保留'Blog'來代替b。 – Shiva

2

b.objects.all()應該是Blog.objects.all(),因爲管理器(對象)必須從模型類而非實例中訪問。

+0

是的,我明白了。謝謝你的回覆。 – Shiva

2

那麼,正如錯誤所述,管理器(.objects)只能從Blog類獲得,而不能從其實例獲得。

但目前尚不清楚你想要做什麼。你期望列表理解返回什麼?

+0

感謝您的答覆。我可以通過將對象名稱'b'更改爲'Blog'來訪問我的表格。 – Shiva