2011-12-22 4 views
0

사용자가 내 사이트에 목록을 만들고 일반 CreateView를 사용하여 만들 수 있습니다. 목록의 필드 중 하나는 소유자 (누가 그것을 작성했는지)입니다.Django : CreateVView.form_valid의 ModelForm에 필드를 추가하십시오.

소유자를 만들고있는 사용자가 이미 소유자이기 때문에 사용자에게 소유자를 선택하도록 요청하는 것은 의미가 없습니다.

그래서 form_class가 소유자 필드를 제외하는 "model"매개 변수 대신 "Form_class"를 CreateView로 전달합니다.

양식을 저장하려면 소유자를 추가해야합니다.

CreateView를 서브 클래 싱하고 form_valid 메소드를 추가했지만,이 작업을 수행하는 데 문제가 있습니다.

지금까지, 나는

class MyCreateView(CreateView) 
    form_class = ListForm 

def form_valid(self, form): 
    form.??? = self.request.user -->> expression of the left side 
    return super(MyCreateView, self).form_valid(form) 

그것은 간단하게 뭔가해야 얻었다. this thread에서 그들은 self.object.owner을 사용한다고 말하지만 self.object는 None 유형입니다.

어떻게 처리해야합니까? 감사

답변

1

당신은 form.instance.owner = request.user을 찾고 다음 나는 form_valid가 호출 직후에 PDB를 사용하고 슈퍼

+0

를 호출하고 있습니다. self.instance는 "DoesNotExist"를 리턴하고 self.instance는 AttributeError를 리턴합니다. 'MyCreateView'오브젝트에는 '인스턴스'속성이 없습니다. ListForm 또한 ModelForm – duduklein

+0

입니다. form.instance = MyModel()을 추가 한 다음 form.instance.owner = self.request.user를 추가했습니다. 이것은 적절하게 작동하지만 모델이 db에 저장되면 표시된 양식의 모든 필드가 비어 있습니다. – duduklein

+0

귀하의 게시물을 잘못 읽었습니다. 업데이트 내 대답 – ojii

관련 문제