두 개의 클래스로 된 모델 내용을 하나의 페이지에서 입력하고 싶습니다


장고 공부를 시작한지 얼마 안되는 초보입니다. 아래와 같은 모델 내용 전체를 하나의 페이지(HTML)에서 한번에 폼으로 입력 받아 저장하려면 어떻게 해주어야 하나요? 클래스 뷰를 사용하고 있습니다.

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=50)
    email = models.EmailField()

    def __str__(self):
        return self.name

class Entry(models.Model):
    headline = models.CharField(max_length=255)
    body_text = models.TextField()

    def __str__(self):
        return self.headline
  • 이름 : __________
  • 이메일 : __________
  • 제목 : __________
  • 내용 ______________________________


  • 2016년 05월 09일에 작성됨

조회수 139


1 답변


좋아요
0
싫어요
채택취소하기

Form을 만들고 거기서 들어오는 입력을 받아서 해당 Model의 테이블에 저장해 주면 됩니다.

forms.py를 이렇게 준비 하시고

from django import forms

class AuthorEntryForm(forms.Form):
    name = forms.CharField(label='name', max_length=30)
    email = forms.EmailField(label='email')
    headline = forms.CharField(label='headline', max_length=30)
    body_text = forms.CharField(label='body_text', max_length=100)

views.py에서 POST요청과 GET을 구분해서 다음과 같이 처리합니다.

def forms_test(request):
    # POST인 경우
    if request.method == 'POST':
        form = AuthorEntryForm(request.POST)
        if form.is_valid():
            name = form.cleaned_data['name']
            email = form.cleaned_data['email']
            headline = form.cleaned_data['headline']
            body_text = form.cleaned_data['body_text']
            print(name,email,headline,body_text)
            #여기가 가져온 정보를 저장하는 부분
            Author(name=name,email=email).save() 
            Entry(headline=headline, body_text=body_text).save() 
            return HttpResponse("Success")
    # Get인 경우, 폼을 그려주기
    else:
        form = AuthorEntryForm()

    return render(request, 'form_test.html', {'form': form})

form_test.html에는 다음과 같은 내용을 넣으세요. render에서 전달받은 form을 그려주는 코드입니다.

<form action="/forms_test/" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit" />
</form>
  • 2016년 05월 09일에 수정됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.
  • 2016년 05월 09일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

  • 답변 고맙습니다. 문제 해결하는데 많은 영감을 얻었습니다. 사실 원래 모델에는 ForeignKey가 있어서 그 문제를 해결하느라 인사가 늦었습니다. 공부 방법에 대해서 궁금한게 있는데요, 프로그램 경험은 없고 파이썬 온라인 강좌 한번 듣고 장고 튜토리얼 해보고 장고 공식 문서 참고해가면서 제가 생각해왔던 서비스를 만들고 있습니다. 웹 서비스를 잘 만들기 위해서는 현재와 같은 방법으로 계속 하는 것이 좋을지 아니면 파이썬을 좀 더 깊이 공부해야 좋을지 모르겠네요. 아무튼 앞으로도 종종 애용하겠습니다. ^^*    nick   2016.5.12 15:39     
  • 일단 한 번 배웠으면 만들고 싶은걸 만드시면서 모르는 문법이 나왔을때 그 부분에 대해서만 찾아보는 정도로 파이썬을 공부하시는게 좋다고 생각합니다. 그래야 재미가 있더라구요.    정두식   2016.5.12 17:31     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close