2014-02-11 2 views
0

제출할 때 서버에 게시되는 여러 양식 요소가있는 HTML 양식이 있습니다. 백엔드에서 유효성 검사가 통과되면 전체 POST 사전을 모델에 전달하여 저장하려고합니다. 예 :django는 모델 속성이 아닌 사전의 필드를 제외합니다.

self.form_data = {key:value for key,value in self.request.POST.iteritems() } 
ApplicationModel(**self.form_data).save() 

그러나 양식에 모델에 연결된 속성이없는 몇 가지 추가 항목이 있습니다. 그래서 결국 오류로 끝납니다.

'csrf_token' is an invalid keyword argument for this function 

모델에 전달하기 전에 양식 사전에서 이러한 항목을 명시 적으로 제거해야합니다.

이 오류를 표시하지 않을 방법이 있습니까 & 사전에있는 모든 항목을 무시합니까? 모델 속성에 매핑되지 않았습니까?

+0

나는 이것이 좋은 아이디어라고 생각하지 말아. 그것은 명시 적으로 한 가지 방법입니다 - 모델이 절대적으로 필요로하는 정보 만 전송하십시오 – karthikr

+0

@karthikr 그 모든 알 수없는 csrf_token은 모든 양식 객체에서 제거해야합니다. 아직도이 문제를 어떻게 해결할 수 있을지 궁금하다. –

+0

'{key : 키 값, self.request.POST.iteritems의 값 ('csrf_token',)} ' – karthikr

답변

1

모델에 대해 ModelForm을 만들고 해당 논리를 처리하도록하십시오.

이것은 ModelForm 년대가 무엇이며, 이것은 당신이 그 문제를 해결 할 거 야 방법은 다음과 같습니다

# forms.py 
from django.forms import ModelForm 
from myapp.models import Article 


class ApplicationForm(ModelForm): 
    class Meta: 
     model = Application 


# views.py 

def my_view(request): 
    if request.method == "POST": 
     form = ApplicationForm(request.POSt) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect("/thanks/") 
    form = ApplicationForm() 
    return render(request, 'template.html', {'form': form}) 
관련 문제