당신은 멋쟁이, 우리는 장고쟁이~

0%

Form API 4편 - 폼 데이터 변경사항 체크하기

Checking which form data has been changed


폼 데이터 변경사항을 체크하기 위해서는 has_changed() 메서드를 사용하면 됩니다.


초기값에서부터 폼 데이터가 변경 되었는지 아니었는지 확인할 필요가 있을떄 체크 합니다.


1
2
3
4
5
6
7
8
9
10
11
In [2]: from forms_more_on_fields.forms import ContactForm  

In [7]: data = {'subject': 'hello',
...: 'message': 'Hi there',
...: 'sender': 'foo@example.com',
...: 'cc_myself': True}

In [8]: f = ContactForm(data, initial=data)

In [9]: f.has_changed()
Out[9]: False

폼이 제출 되었을때, 우리는 다시 폼을 만들고 오리지널 데이터를 제공하여 비교가 이루어 질수 있습니다.


1
2
>>> f = ContactForm(request.POST, initial=data)
>>> f.has_changed()

만약, request_POST 에서 온 data 가 initial 에 있는 데이터와 다르다면, has_changed() 는 True 를 반환할겁니다. 그렇지 않다면, False 를 반환합니다.


이 결과는, 폼안에 있는 각 필드에, has_changed() 를 호출함으로 계산됩니다.


Form.changed_data


changed_data 속성은 initial 에 제공되었던 데이터와 다른 데이터들이, 폼을 통해 (보통 request.POST를 통해서) 온 데이터들과 다를때, 폼의 bound data 안에 있는 필드들의 이름을 가진 리스트를 반환합니다.


1
2
3
4
5
>>> f = ContactForm(request.POST, initial=data)
>>> if f.has_changed():
... print("The following fields changed: %s" % ", ".join(f.changed_data))
>>> f.changed_data
['subject', 'message']