2014-03-05 4 views
0

그래서 같은 Modelform를 사용하는 일반보기로 URL을 통해 옵션 값을 보내고있다 like :보내기 url 매개 변수는

class myForm(ModelForm): 
    institution = CustomModelChoiceField(...) 
    class Meta: 
     model = myModel 
     ... 

드롭 다운 필드의 기본 선택 값을 URL에 전달 된 값으로 설정해야합니다.

전달되는 값은 모델의 'id'입니다.

  1. 값을 myForm으로 어떻게 전달합니까?
  2. myForm은이를 'selected'값으로 어떻게 설정합니까?

나는 다른 방법으로이 작업을 수행 할 수 있습니다.

더 큰 그림 :

나는 Form1을 가지고 내가 다른 형식 2 (모델 2)를 팝업 (모델 1) (외래 키 1을 모델링). form2가 성공하면 form1 드롭 다운이 새로운 foreigh 키로 설정됩니다.

나는 AJAX를 통해 그것을 수행하는 것에 대해 생각해 보았지만, 앞으로의 기능을 위해서는 url의 값을 전달하는 것이 좋습니다.

다른 방법으로 다시 열 수 있습니다.

감사합니다. 만약 내가 제대로 이해 (this 참조)

답변

1

, 당신은 양식 생성자에 id를 전달하는 get_form_kwargs 방법을 대체 할 수 있습니다

# views.py 

def get_form_kwargs(self): 
    kwargs = super(CreateView, self).get_form_kwargs() 
    kwargs.update({'id': self.kwargs.get('id')}) 
    return kwargs 

# forms.py 

def __init__(self, *args, **kwargs): 
    id = kwargs.pop('id', None) 
    super(Form, self).__init__(*args, **kwargs) 
    self.fields['id'].initial = id 
+0

이 작동하지 않습니다 , 나는 다음과 같은 오류 얻을 : __init의 __()를 예상치 못한 키워드를 가지고 argument 'id' – Ryan

+0

나는 무엇이 잘못되었는지 알아 냈고 당신의 답을 편집 했으므로 아마 그것을 볼 수 없을 것입니다. 기본적으로 kwargs는 원래 형식으로 반환되어야합니다. my_arg_val = kwargs.pop ('id', None)은 '__init__'의 'super'가 호출되기 전에 필요합니다. – Ryan

+0

@ 라이언 예, 부끄러워요, 미안 해요 =) – erthalion

관련 문제