Dynamic initial values
Form.initial
initial 을 사용하여, 실행시에 폼필드의 초기값을 지정할수 있습니다.
예를들면, 여러분들은 현재 세션의 username 을 username 필드에 채워놓고 싶을지도 모릅니다
이런 동작을 구현하기 위해서, initial 인자를 Form 에 써줍니다.
이 인자가 주어질때는, 필드명이 초기값에 매핑되는 사전 형태여야 합니다.
오직 여러분들이 초기값을 지정하고 싶은 필드에만 포함합니다.
폼안에 모든 필드에 쓰는것은 불필요한 일입니다.
예를들면,
1 | f = ContactForm(initial={'subject': 'Hi there!'}) |
이 값들은 오직 unbound 폼에만 표시되고, 만약 특정 값이 주어지지 않을때에 fallback 값으로 사용되지 않습니다.
만약 필드가 initial 을 정의하고, initial 폼을 인스턴스화 할때 포함하면, 두번째가 먼저 택해집니다. 아래 예시에는, initial 이 필드에서 주어졌고, 폼 인스턴스에도 주어졌습니다. 두번째가 우선시 됩니다.
1 | from django import forms |
Initial 값이 정해져 있어도,
폼의 인스턴스를 생성할때 initial 을 지정해주면, 인스턴스 생성할때 지정한 initial 값이 해당 필드에 지정이 됩니다.
Form.get_initial_for_field(field, field_name)
get_initial_for_field() 를 사용하여, 폼 필드의 초기 데이터를 조회할수 있습니다. 이는 Form.initial 과 Field.initial 로 부터, 데이터를 조회하고, 그 순서대로 호출 가능한 초기값들을 평가합니다 .