html로 하나씩 입력칸을 만드는게 아니고 모델 폼을 만들어서 효율적으로 데이터를 입력하는 방법을 공부했다.
(https://practice-a-lot.tistory.com/56)
데이터를 입력했으면 수정하는 방법도 알아보자.
입력한 데이터를 가져오는 방법은 쿼리를 통해서 데이터가 저장된 객체를 호출하여 폼에 두는 것이다.
빈 폼과의 차이점은 폼이 데이터를 보유했냐는 여부이다.
1 2 3 4 5 6 | def edit_info(request): ctx = {} if request.method == "GET": character = Character.objects.get(user=request.user) form = CharacterForm(instance=character) ctx.update({ "form" : form }) | cs |
쿼리 없이 더 간단하게 처리하는 방법은 직접 데이터에 접근하는 것이다.
1 2 3 4 5 | def edit_info(request): ctx = {} if request.method == "GET": form = CharacterForm(instance=request.user.character) ctx.update({ "form" : form }) | cs |
request.user.character는 이미 모델 폼을 통해 입력된 데이터가 포함되어있다.
그러므로 굳이 쿼리를 사용해 변수에 지정하는 수고를 덜 수 있다.
데이터를 수정 후 저장할 때에도 동일한 인스턴스를 지정해둔다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | def index(request): ctx = {} if request.method == "GET": form = CharacterForm(instance=request.user.character) ctx.update({ "form" : form }) elif request.method == "POST": form = CharacterForm( request.POST, instance=request.user.character ) if form.is_valid(): character = form.save(commit=False) character.user = request.user character.save() return redirect("/character/") else: ctx.update({ "form" : form }) | cs |
'코딩 연습 > Django' 카테고리의 다른 글
이미지를 저장하기(DB, Form, Url, Settings) (0) | 2018.12.02 |
---|---|
쿼리 연습하기 (0) | 2018.12.01 |
ModelForm을 통해 입력 받은 값 View에서 처리하기 (0) | 2018.11.30 |
OneToOneField 활용 (1대1 관계) (0) | 2018.11.29 |
View에서 authenticate 함수 활용하기 (회원 인증 받기) (0) | 2018.11.28 |