복붙노트

[PYTHON] Django : FormView에 동적 (비 모델) 데이터를 미리 채우는 방법은 무엇입니까?

PYTHON

Django : FormView에 동적 (비 모델) 데이터를 미리 채우는 방법은 무엇입니까?

get_context_data ()를 사용하여 제공되는 몇 가지 추가 GET 컨텍스트가있는 FormView 뷰가 있습니다.

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

이것은 잘 작동합니다. 그러나 폼에 미리 채울 세션의 일부 값 (바인딩 된 모델이 아님)도 있습니다. 이들은 이전 페이지의 사용자 행동에 따라 다릅니다. 나는 (다른 게시물에서) 폼을 컨텍스트 (초기 =)와 함께 전달할 수 있지만 위의 FormView 상황에서 가능하다는 것을 알고있다.

해결법

  1. ==============================

    1.FormView 클래스의 'get_initial'메소드를 재정의 할 수 있습니다. 자세한 정보는 여기를 참조하십시오.

    FormView 클래스의 'get_initial'메소드를 재정의 할 수 있습니다. 자세한 정보는 여기를 참조하십시오.

    e.

    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'은 키가 양식의 필드 이름 인 사전을 리턴해야하며 값은 양식을 사용자에게 표시 할 때 사용할 초기 값입니다.

  2. from https://stackoverflow.com/questions/22083218/django-how-to-pre-populate-formview-with-dynamic-non-model-data by cc-by-sa and MIT license