Django:表单和同一页面上的对象列表的模板

时间:2015-03-29 19:28:04

标签: django django-models django-forms django-templates

我正在尝试为具有以下行为的页面设置模板。最初,它将包含未填充的表单和特定模型的所有对象的列表。然后,用户可以在表单中输入信息,并且在点击提交时,将过滤显示的模型列表以适当地反映提交的请求。

我相信我有正确设置所有这些的逻辑;这是此页面的视图:

def search(request):

    objs = Area.objects.all()

    if request.method == 'POST':

        form = AreaForm(request.POST)

        if form.is_bound and form.is_valid():

            # check if requested number of chairs/tables/etc
            # is at most the amount present    
            # or skip if blank
            def check(area, key, val):
                attr_val = getattr(area, key)
                attr_val is None or attr_val >= val

            # filter out those objects which don't have the criteria
            for key, val in form.cleaned_data.items:
                objs = [area for area in objs if check(area, key, val)]

    else:
        form = AreaForm()

    return render(request, 'SpotMe/search.html', {'form' : form, 'objs': objs})

所以现在(我相信)我只需要设置模板html。到目前为止我所拥有的是:

<form action="" method="GET">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Send message" />
</form>

但我对如何前进感到不知所措。我非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

如果您的objs包含正确的项目,则只需添加类似

的内容
{% for obj in objs %}
<li>{{ obj }}</li>
{% endfor %}
关闭</form>代码后