构建一个用于添加对象的两阶段Django管理表单?

时间:2011-02-10 00:41:19

标签: django django-admin

是否可以在Django admin中构建一个用于创建对象的两阶段表单?

当管理员用户访问/admin/my-app/article/add/时,我想显示一些选项。然后,应用程序将根据所做的选择显示具有预先计算字段的创建页面。

1 个答案:

答案 0 :(得分:5)

您可以覆盖add_view的{​​{1}}(Source)上的ModelAdmin方法。它负责渲染模型并将对象添加到数据库中。

在添加功能时,您可能希望保持原始代码的完整性,而不是复制/修改它。

<强>草案

myapp.article

现在你需要区分这两个阶段。 GET查询字符串中的参数可以执行此操作。要将初始数据传递给管理员中的表单,您只需要在查询字符串中包含fieldname值对作为参数。

草案2

def add_view(self, request, **kwargs):
    if Stage1:
        do_my_stuff()
        return response
    else:
        return super(ModelAdmin, self).add_view(self, request, **kwargs)

您可能需要查看代码以在第一阶段返回正确的响应。有几个模板变量def add_view(self, request, **kwargs): if 'stage2' not in request.GET: if request.method == 'POST': # calculate values parameters = 'field1=foo&field2=bar' return redirect('myapp_article_add' + '?stage2=1&' + parameters) else: # prepare form for selections return response else: return super(ModelAdmin, self).add_view(self, request, **kwargs) 集,但希望这是一个好看的开始。