0

我想在对选定对象进行更改之前为它们创建一个确认页面(在管理员之外)。对象可以是不同的模型(但一次只有一个模型)。

这很像删除前在管理中所做的。但是管理代码很复杂,我还没有掌握它是如何在那里完成的。

首先,我有几个表单以不同方式过滤对象,然后我将查询集传递给操作/确认页面。我创建了一个表单工厂,以便我可以根据模型定义不同的查询集(如 Stackoverflow 的另一个类似问题所示):

def action_factory(queryset):
    ''' Form factory that returns a form that allows user to change status on commissions (sale, lead or click)
    '''
    class _ActionForm(forms.Form):
        items = forms.ModelMultipleChoiceField(queryset = queryset, widget=forms.HiddenInput())
        actions = forms.ChoiceField(choices=(('A', 'Approve'), ('D' ,'Deny'), ('W' ,'Under review'), ('C' ,'Closed')))
    return _ActionForm

我认为我使用的是:

context['form']=action_factory(queryset)()

问题是 items 字段在隐藏时根本不会显示在 html 代码中。当我删除 HiddenInput 小部件时,它会正确显示表单。

我不想显示选择字段,因为可能有数千个对象。我想要的只是“你想改变 1000 个对象的状态吗”以及一个弹出窗口和一个提交按钮。这似乎是一个足够简单的问题,但我无法让它工作。

如果有人对我目前的尝试有解决方案,我会很高兴听到他们是如何做到的。如果有更清洁和更好的解决方案,那就更好了。

4

1 回答 1

0

我使用了错误的小部件。它应该是 MultipleHiddenInput 而不是 HiddenInput。

于 2011-07-13T08:54:20.023 回答