【问题标题】:Build a two-stage Django admin form for adding an object?构建一个用于添加对象的两阶段 Django 管理表单?
【发布时间】:2011-06-24 13:05:40
【问题描述】:

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

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

【问题讨论】:

标签: django django-admin


【解决方案1】:

您可以覆盖myapp.articleModelAdmin (Source) 上的add_view 方法。它负责渲染模型表单并将对象添加到数据库中。

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

草稿

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

现在您需要区分这两个阶段。 GET 查询字符串中的参数可以做到这一点。要将初始数据传递给管理员中的表单,您只需在查询字符串中包含字段名称值对作为参数。

草案 2

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)

您可能需要查看代码以在第一阶段返回正确的响应。有几个模板变量 add_view 集,但希望这是进一步研究的良好开端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2011-10-11
    • 2023-02-24
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    • 2012-05-12
    相关资源
    最近更新 更多