Подтвердить что ты не робот

Django: Как предварительно заполнить FormView динамическими (немодельными) данными?

У меня есть представление FormView, с некоторым дополнительным контекстом GET, поставляемым с использованием get_context_data():

class SignUpView(FormView):
    template_name = 'pages_fixed/accounts/signup.html'
    form_class = SignUpForm

    def get_context_data(self, **kwargs):
        context = super(SignUpView, self).get_context_data(**kwargs)
        context = {
            'plans':    common.plans,
            'pricing':  common.pricing,
        }
        return context

Это прекрасно работает. Однако у меня также есть некоторые значения в сеансе (не из какой-либо связанной модели), которые я хотел бы предварительно заполнить в форме. Они различаются в зависимости от действий пользователя на предыдущих страницах. Я знаю (из моего другого сообщения), что могу передать форму в контекст (с initial=), но возможно ли это в ситуации FormView, описанной выше?

4b9b3361

Ответ 1

Вы можете переопределить метод get_initial класса FormView. См. здесь для получения дополнительной информации,

например.

def get_initial(self):
    """
    Returns the initial data to use for forms on this view.
    """
    initial = super(SignUpView, self).get_initial()

    initial['my_form_field1'] = self.request.something

    return initial

'get_initial' должен возвращать словарь, в котором ключи являются именами полей в форме, а значения - это начальные значения, используемые при показе формы пользователю.