2015-01-14 1 views
0

에 저장되어있는 경우 내가 Django1.7은 어떻게 장고 양식 DB

models.py

from django.db import models 
from django.forms import ModelForm 

class Biodata(models.Model): 
    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=30) 
    room_number = models.IntegerField(default=0) 

    def __str__(self): 
     return self.first_name 

class BiodataForm(ModelForm): 
    class Meta: 
     model = Biodata 
     fields = '__all__' 

views.py

def getdata(request): 
    if request.method == 'POST': 
     form = BiodataForm(request.POST) 
     if form.is_valid(): 
      post = request.POST 
      firstname = post['first_name'] 
      lastname = post['last_name'] 
      newbiodata = form.save() 
      return render(request, 'bio/index.html', {'first_name': firstname, 'last_name': lastname}) 
    else: 
     form = BiodataForm() 
    return render(request, 'bio/biodataform.html', {'form': form}) 

에 간단한 ModelForm했다 확인 모든 것이 잘 작동합니다.

질문 :

어떻게 내 데이터베이스와 정보는이 양식을 사용하여 저장 볼 수 있습니까?

+2

귀하의 질문은 불분명하다 ...! 코드 자체에 저장된 양식 정보를 확인 하시겠습니까? 또는 실제 데이터베이스에 있습니까? –

+0

양식이 실제 데이터베이스에 저장되어 있는지 확인하여 양식을 통해 다른 사람이 제공 한 정보를 쿼리 할 수 ​​있는지 확인하고 싶습니다. – aquaman

+0

...? Daniel Roseman 대답을 사용할 수 있습니다 ...! 또 뭐가 필요하니? –

답변

0

할 수있는 두 가지 작업이 있습니다.

  1. 신뢰 장고. 양식을 저장 한 다음 가져온 개체를 템플릿에 전달하십시오. 객체가 존재하면 템플릿에 전달되어야합니다. 그래서 같이 :

    def getdata(request): 
        if request.method == 'POST': 
         form = BiodataForm(request.POST) 
         if form.is_valid(): 
          post = request.POST 
          newbiodata = form.save() 
          return render(request, 'bio/index.html', 
           { 'first_name': newbiodata.firstname, 
            'last_name': newbiodata.lastname }) 
    
  2. 데이터베이스에서 명시 적으로 개체에 대해 문의하십시오. 폼의 개체의 기본 키 (pk)를 사용하여 명시 적으로 데이터베이스에서 다시 호출합니다. 이것은 아마도 과잉 공격 일 것이며 여분의 (아마도 중복 된) 쿼리를 강요 할 것입니다.

    def getdata(request): 
        if request.method == 'POST': 
         form = BiodataForm(request.POST) 
         if form.is_valid(): 
          post = request.POST 
          bio = form.save() 
          newbiodata = models.Biodata.objects.get(pk=bio.pk) # get it back 
          return render(request, 'bio/index.html', 
           { 'first_name': newbiodata.firstname, 
            'last_name': newbiodata.lastname }) 
    
+0

고마워, 그게 효과가 있었지만 다른 파일에서 똑같은 일을 하는게 가능해. 어떻게 내가 프라이 머리의 정보에 접근하고 질의 할 수 있도록 프라이 머리 키를 만들 수 있니? – aquaman

0

당신은 성공적인 게시물에 템플릿을 렌더링하지 않아야 장점은 이것이 매우 눈에 보이는 ObjectDoesNotExist 예외를 던질 그러나 것이다 저장하지 않는 경우에 당신이 편집증 종류의 경우,이 작업을하는 것입니다 . 대신 새 URL로 리디렉션해야합니다. 이렇게하면 데이터베이스에서 새 객체를 가져올 수있는 완벽한 기회가 제공됩니다. 폼보기에서 :

newbiodata = form.save() 
return redirect('show_biodata', kwargs={'pk': newbiodata.pk}) 

지금 당신이 show_biodata보기에서 다시 가져올 수 :

def show_biodata(request, pk): 
    biodata = BioData.objects.get(pk=pk) 
    return render(request, 'bio/index.html', {'first_name': biodata.firstname, 'last_name': biodata.lastname}) 
+0

내 질문에 대답 해 주셔서 고맙습니다.하지만 NoReverseMatch 오류가 나타납니다. 'show_biodata'와 '()'및 키워드 인수 '{'kwargs ': {'pk ': 8L}}'를 찾을 수 없습니다. 0 개의 패턴을 시도했습니다 : [] ... plz 다시 도움이 – aquaman

+1

글쎄, 실제로 그보기에 대한 URL 항목을 만들어야합니다. –

+0

미안하지만, 무슨 뜻인지 이해하지 못 했어. 나는 단서가 없다. 미안 .. 더 plz 설명 할 수있어. – aquaman