2014-05-10 2 views
0

에보기 매개 변수를 만들어이이 장고 I는 다음과 같이 할 것 기능을 기반 뷰에서 generic create view장고 양식

class TestCreateView(CreateView): 
    form_class = TestCreateForm 

##forms.py 
class TestCreateForm(forms.ModelForm): 
    class Meta: 
     model = Test 

    def __init__(self, user, *args, **kwargs): 
     super(TestCreateForm).__init__(*args, **kwargs) 
     self.fields['test_field'] = Testing.objects.filter(user=user) 

:

일반 클래스를 기반으로보기에 지금
form = TestCreateForm(request.user) 

내가 덮어 쓰기해야합니까 , getpost 방금이 방법이 필요하십니까?

+1

당신은 체크 아웃해야 CCBV의 ['CreateView'] (http://ccbv.co.uk/CreateView/). 장고의 클래스 기반 뷰에서 사용할 수있는 것을 찾는 훌륭한 참고 자료입니다. 유용하다고 생각하길 바랍니다. * 전체 공개 :이 도구를 작성했습니다. * – meshy

답변

4
class TestCreateView(CreateView): 
    form_class = TestCreateForm 

    def get_form_kwargs(self, **kwargs): 
     form_kwargs = super(TestCreateView, self).get_form_kwargs(**kwargs) 
     form_kwargs["user"] = self.request.user 
     return form_kwargs 
0

당신이 초기화 (양식을 실체화 할 때마다) 당신이 할 수있는 것은 CreateView 클래스에서 get_form_kwargs를 오버라이드 (override)입니다에 인수를 추가해야하기 때문에 :

class TestCreateView(CreateView): 
form_class = TestCreateForm 

    def get_form_kwargs(self): 
    kwargs = { 
     'initial': self.get_initial(), 
     'prefix': self.get_prefix(), 
     'user': self.request.user 
    } 

    if self.request.method in ('POST', 'PUT'): 
     kwargs.update({ 
      'data': self.request.POST, 
      'files': self.request.FILES, 
     }) 
    return kwargs