0

Django를 배우려고하면 어쩌면 주요 개념이 잘못 될 수 있습니다.Django에서 다음 코드를 실행할 위치는?

양식을 작성 :

class PostForm(ModelForm): 
class Meta: 
    model = Post 
    exclude = ('pub_date',) 
    labels = { 
     'body_text': _('Post'), 
} 

양식과보기를 호출 :

class PostCreate(generic.CreateView): 
    template_name = 'post/post_form.html' 
    form_class = PostForm 

문제 것은 내가 수동으로 제외 된 값을 입력해야합니다. 파이썬은 docs say to do something like this:

form = PartialAuthorForm(request.POST) 
author = form.save(commit=False) 
author.title = 'Mr' 
author.save() 

나는 곳이 코드를 입력 할 생각이 없다. 뷰 기능에 대한 나의 이해는 그들이 페이지를 만드는 코드를 포함하고 따라서 다시 호출되지 않을 것이지만, 나는 틀릴 것이다. 아니면이 경우 일반 뷰를 사용할 수 없습니까?

이 문제에 대한 해결책으로 충분하지만 뷰에 대한 개념적 설명이 더 좋습니다.

+0

generic.CreateView로 가정합니다. 나는 그것을 고쳤다. 미안합니다. – Ryan

답변

2

무엇이 POSTView입니까? 그것은 당신이 창조 한 것입니까, 아니면 장고에 새로운 것입니까?

당신이하려는 일을 완수하는 한 가지 방법은 장고 FormView (또는 CreateView)을 사용하고 form_valid 방법을 덮어 쓰는 것입니다.

class PostCreate(CreateView): 
    template_name = 'post/post_form.html' 
    form_class = PostForm 

    def form_valid(self, form):   
     author = form.save(commit=False) 
     author.title = 'Mr' 
     author.save() 
     # return HttpResponse 
+0

generic.CreateView, 죄송합니다. 나는 그것을 편집했다. – Ryan

0

이 예제는 클래스 기반이 아닌 기능보기를 사용하고 있습니다. form_valid 메서드 내부의 클래스 뷰에서이 작업을 수행 할 수 있지만 양식이 이미 해당 메서드로 전달 될 때 첫 번째 행을 삭제해야합니다.

1

일반보기를 사용하는 경우 https://docs.djangoproject.com/en/1.6/ref/class-based-views/generic-editing/#createview을보고 조상 (MRO)에서 상속 한 방법을 찾아야합니다.

여기서 모델 인스턴스를 저장하기 전에 post 메소드를 재정의하여 pub_date 필드에 값을 할당 할 수 있습니다. 예 :

class PostCreate(generic.CreateView): 
    template_name = 'post/post_form.html' 
    form_class = PostForm 

    def post(self, request, *args, **kwargs): 

     form = PostForm(request.POST) 

     if form.is_valid(): 
      post = form.save(commit=False) 
      post.pub_date = datetime.now() 
      post.save() 

      return self.form_valid(form) 

     return self.form_invalid(form) 

직접 form_valid 메서드 재정의를 사용할 수도 있습니다. 어느 쪽이든,보기는 GET 요청 (양식보기, 일반적으로 작성보기에는 비어 있음) 및 POST (양식 제출)로 호출 할 수 있음을 상기시켜주십시오.

바운드 및 언 바운드 양식 동작을 더 잘 이해하기 위해 ModelForm 용 Django 문서를 살펴보십시오.

희망이 도움이됩니다.

+0

상속 된 함수를 재정의하는 것에 대해 생각 나게 해 주셔서 감사합니다. +1 – Ryan

관련 문제