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


블로그 이미지

쵸잇

,