如何从django中的数据库获取最新数据

时间:2017-07-02 22:19:30

标签: django django-models django-forms django-views

我得到的错误是“'帮助'对象不可迭代”。 如何从数据库中获取最新记录并将其显示在目标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 %}

3 个答案:

答案 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所述)