复选框和POST

时间:2015-05-23 11:34:38

标签: python django

我当前的视图执行删除和创建功能。

您可以使用复选框删除项目。

无论如何要做一个可编辑的表吗? 我的意思是可能改变一种在模板上显示数据库的方法,并添加一个保存按钮?

这是一个截图

http://postimg.org/image/uromygv7f/

这里是views.py

def task1(request):

    if request.POST and 'create' in request.POST:
        form = AuthorForm(request.POST)
        if form.is_valid():
            form.save()
        args = {}
        args.update(csrf(request))
        args['form'] = form
        args['authors'] = Author.objects.all()
        return render_to_response('tasks/task1.html',args)
    elif request.POST and 'delete' in request.POST:

        """form= AuthorForm()
        if form.is_valid():
            form.save()
        args = {}
        args.update(csrf(request))
        args['form'] = form
        args['authors'] = Author.objects.all()"""

        Author.objects.filter(id__in=request.POST.getlist('item')).delete()
        return render_to_response('tasks/task1.html')
    else:
        form = AuthorForm()




    args = {}
    args.update(csrf(request))

    args['form'] = form
    args['authors'] = Author.objects.all()

    return render_to_response('tasks/task1.html',args)

和模板

<form action="/task1/" method="post">{% csrf_token %}
    <ul>
        {{ form.as_table}}
    </ul>
    <input type="submit" value="Create"  name="create"/>

    {% if authors.count > 0 %}
    {% for author in authors %}
    <ul>
        {{author.id}}  {{author.name}} {{author.body}} {{author.deletes }}     <input type="checkbox" name="item" value="{{author.pk}}">
    </ul>
    {% endfor %}
    {% endif %}
    <input type="submit" value="Delete"  name="delete"/>
</form>

1 个答案:

答案 0 :(得分:0)

来自Django documentation: Models

  

会自动添加id字段,但可以覆盖此行为。请参阅Automatic primary key fields

这是一个自动增量字段,允许在将新记录插入表格时生成唯一编号。更新或删除后,此数字不会自动更改。有关更多信息,请参阅示例MySQL reference(实现因不同的数据库而异,但您可以了解一下)。

由于id字段不会自动更改,因此不应影响排序。您仍然可以在id上对表进行排序。如果您希望模板中显示自动增量(1,2,3,...)字段,则可以使用{{ forloop.counter }}