Django - страница подтверждения перед сменой разных моделей - PullRequest
0 голосов
/ 30 июня 2011

Я бы хотел создать страницу подтверждения для выбранных объектов, прежде чем вносить в них изменения (вне администратора).Объекты могут быть разных моделей (но только одна модель за раз).

Это очень похоже на то, что делается в администрации перед удалением.Но код администратора сложен, и я не понял, как это делается там.

Сначала у меня есть несколько форм, которые по-разному фильтруют объекты, а затем я передаю набор запросов на страницу действия / подтверждения.Я создал фабрику форм, чтобы я мог определять различные наборы запросов в зависимости от модели (как видно из другого похожего вопроса здесь, в 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)()

Проблема в том, что поле элементов вообще не будет отображаться в html-коде, когда оно скрыто.Когда я удаляю виджет HiddenInput, он правильно отображает форму.

Я не хочу отображать поле выбора, так как могут быть тысячи объектов.Все, что я хочу, это что-то вроде «Вы хотите изменить статус 1000 объектов», всплывающее окно и кнопка отправки.Кажется, это достаточно простая проблема, но я не могу заставить ее работать.

Если у кого-то есть решение моей текущей попытки, я был бы рад услышать, как он это сделал.Еще лучше было бы, если есть более чистое и лучшее решение.

1 Ответ

0 голосов
/ 13 июля 2011

Я использовал не тот виджет.Это должен быть MultipleHiddenInput, а не HiddenInput.

...