내가 self.kwargs.pop ('PK'를 사용하여 내 폼에 추가 매개 변수 ('PK')을 통과 할 때 내가 장고 1.9과 CreateView에 CBV를 사용하고 있습니다) 난 "키 오류"를 가지고 있지만, 나는 그것이 작동 인덱스 매개 변수를 얻는 경우에, 여기 내 코드입니다 :장고 KeyError를의 kwargs.pop ('PK')
def get_form(self, form_class=None, **kwargs):
self.project_version_pk = self.kwargs.pop('pk')
form = super(HRCreateView, self).get_form(form_class)
form.fields['project_version'].queryset = form.fields['project_version'].queryset.filter(pk=self.project_version_pk)
form.fields['project_version'].initial = self.project_version_pk
return form
def get(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class, pk=self.kwargs['pk'])
return self.render_to_response(
self.get_context_data(form=form)
그리고이 오류가 얻을 :
builtins.KeyError KeyError를 'PK'
을File "RelationView.py", line 65, in get_form
self.project_version_pk = self.kwargs.pop('pk')
KeyError: 'pk'
하지만이 키를 읽으면 t 작동 : 매개 변수가 팝업에없는 이유를 정말 이해가 안
def get_form(self, form_class=None, **kwargs):
self.project_version_pk = self.kwargs['pk']
form = super(HRCreateView, self).get_form(form_class)
form.fields['project_version'].queryset = form.fields['project_version'].queryset.filter(pk=self.project_version_pk)
form.fields['project_version'].initial = self.project_version_pk
return form
() 또는이를위한 가장 좋은 방법이된다.
확인 응답에 대한 감사합니다,하지만 난 얻을 오버라이드 (override)하지 않는 경우, 나는'get_form' 방법 ''pk''을 통과 할 수있는 방법? –
필요가 없습니다. 어쨌든이 메소드에 대한 인수를 사용하지 않고 있습니다. –
나는 '이'형태 = self.get_form 불구하고 pk'' (form_class, PK = self.kwargs를'통과하고있어 ['PK ']없이 pk'')를'get' 방법'에, 형태는'얻을 수있는 방법' 다른 방법으로 통과시켜야합니까? 왜냐하면 나는 CreateView와 UpdateView를위한 동일한 폼을 가지고 있고''pk''' 만 CreateView를 전달해야하기 때문입니다. 죄송합니다, 아마도 이것은 모두 당신에게 분명합니다.하지만 장고는 불과 몇 달 전에 고맙습니다. –