2017-07-02 79 views
0

我得到的錯誤是「'help'對象不可迭代」。 我如何從數據庫中獲取的最新記錄,並得到它顯示我的目標HTML頁面上如何從django的數據庫中獲取最新數據

我views.py是

def about_experiment(request,ex_link_name): 
    researcher = None 
    study = None 
    posts = None 
    if request.method == 'POST': 
     form = AboutHelp(request.POST) 
     posts = help.objects.filter().order_by('-date')[0] 
     #print(posts) 
     if form.is_valid(): 
      obj = form.save(commit = False) 
      obj.save() 
      researcher = form.cleaned_data['researcher'] 
      study = form.cleaned_data['study'] 

    else: 
     form = AboutHelp() 
    return render(request, 'about_experiment.html', {'posts': posts}) 

我的目的地頁面about_experiment.html是

{% for help in posts %} 
    <h4><b>{{ help.study }}</b></h4> 
    <p>posted by {{ help.researcher }} on {{help.date}}</p> 
    {% endfor %} 
+0

也許你忘了輸入模型?像'從appName.models導入幫助'在views.py文件的頂部 – hansTheFranz

+0

不能在那裏。當你嘗試使用'help.objects.all()'時會發生什麼,我有 – unknown

+0

?你在模型中安裝了'objects = Manager'嗎? – hansTheFranz

回答

0

爲了增加voodoo-burger's答案:

posts = help.objects.filter().order_by('_date') 

返回的查詢集,這是一個迭代。但是你添加了[0],所以你只能從查詢集中獲得一個對象,因此它將不可迭代。

在您的模板裏,你因此你可以只使用{{ posts.field_name }}

因爲你只返回一個對象,post是一個更合乎邏輯的描述性名稱,然後posts(如voodoo-burger提到的)

1

你是如何定義幫助模型的?如果是class Help,你應該改變這樣的:

posts = help.objects.filter().order_by('-date')[0] 

要這樣:

posts = Help.objects.filter().order_by('-date')[0] 
+0

它沒有作出任何差異,因爲我的課是班級幫助 – unknown

+0

你得到錯誤POST,GET操作或兩者? – FedericoG

+0

其用於請求方法POST – unknown

0

{{ posts }}在你的模板將是help類,它是不是一個迭代的一個對象實例,所以你可以」不要在for循環中使用它。而只需使用{{ posts.fieldname }}

也考慮將posts更改爲更合乎邏輯的名稱。您可以使用post甚至help

相關問題