我得到的错误是“'帮助'对象不可迭代”。 如何从数据库中获取最新记录并将其显示在目标html页面上
我的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 :(得分:1)
您是如何定义帮助模型的?如果是image
,您应该更改此内容:
class Help
对此:
posts = help.objects.filter().order_by('-date')[0]
答案 1 :(得分:0)
{{ posts }}
是help
类的单个对象实例,它不是可迭代的,因此您无法在for循环中使用它。而只需使用{{ posts.fieldname }}
。
另请考虑将posts
更改为更合乎逻辑的名称。您可以使用post
甚至help
。
答案 2 :(得分:0)
添加到voodoo-burger's回答:
SortedMap<Date, String> map = new TreeMap<>();
map.put(someDate, someId);
...
SortedMap<Date, String> between = map.subMap(fromDate, toDate);
返回一个可迭代的查询集。但是你添加了posts = help.objects.filter().order_by('_date')
,所以你只从查询集中得到一个对象,因此它不会被迭代。
在您的模板中,您可以使用[0]
。
因为您只返回一个对象,{{ posts.field_name }}
是一个更符合逻辑和描述性的名称,然后是post
(如voodoo-burger所述)