Django,创建可以批量删除,编辑等对象的列表

时间:2014-05-22 10:36:10

标签: django django-forms django-views

我似乎无法找到有关构建可编辑列表视图的大量信息。

例如,我想创建一个用户列表,每个用户都与复选框并列,以便其他用户可以浏览并批量删除用户或者编辑每个用户的某些属性。

最好的解决方法是什么,或者我需要搜索哪些术语来了解如何执行此操作?理想情况下,我喜欢基于类的视图解决方案(ListView?),但FBV也可以工作。

提前致谢,

1 个答案:

答案 0 :(得分:1)

您需要的是formset。 https://docs.djangoproject.com/en/dev/topics/forms/formsets/

如果你想删除一堆用户,你可以:

1)创建Userform,它有一个额外的布尔字段 - delete

2)更改表单,在save方法中,如果delete等于True,则删除对象

3)创建使用previouscly创建的表单的formset:

UserFormSet = modelformset_factory(User, form=PreviouslyCreatedUserForm)

4)如果在视图中,formset清除没有错误,请调用formset.save()

5)给用户一些反馈。

也许在表单中使用save方法是不行的,在这种情况下你也可以在视图中循环遍历表单。但是,您必须设置某种参数,以确定是否将表单/对象标记为删除。

for form in formset:
  if form.delete = True:
    obj = form.save(commit = False)
    obj.delete()

无论如何,formset是非常强大的工具,看看主题,我相信它会提出不同的使用方法。