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