2016-05-19 4 views
1

私のプロジェクトでは、フォーム上で外部キー選択オプションをフィルタリングする必要があります。私がしなければならないすべてはあるビューでビューで渡されたオブジェクトIDに基づいてフォーム上の外部キーを選択するオプション

class ResultadoForm(forms.ModelForm): 
frequencia = forms.CharField(max_length=50) 
tolerancia = forms.CharField(max_length=255) 
def __init__(self, equipamento_id, *args, **kwargs): 
    equipamento_id = kwargs.pop('equipamento_id') 
    super (ResultadoForm, self).__init__(*args, **kwargs) 
    self.fields['teste'].queryset = Teste.objects.filter(equipamento=equipamento_id) 

class Meta: 
    model = Resultado 
    exclude = ['actividade'] 

form1 = ResultadoForm(equipamento_id) 

問題は、私が合格することができませんで、私はそうのような形の__init__メソッドにパラメータを渡すと、それを行うことができますパラメータequipamento_idをinlineformset_factoryに設定します。

form1 = inlineformset_factory(Actividade, Resultado, form=ResultadoForm(equipamento_id), exclude=('actividade',), extra=len(testes_list)) 

これはエラーを発生させます。外部キーオプションをフィルタリングできるようにするには、どのようにしてequipamento_idパラメータをinlineformset_factoryに渡すことができますか?あなたがDjangoの1.9を使用している場合

答えて

1

あなたは、データを渡すためにform_kwargsを使用することができます。form_kwargsについて

FormSet1 = inlineformset_factory(Actividade, 
           Resultado, 
           form=ResultadoForm, 
           exclude=('actividade',), 
           extra=len(testes_list)) 

formset = FormSet1(form_kwargs={'equipamento_id': equipamento_id}) 

Djangoのドキュメントを。

+0

ありがとうございました。それは魅力のように働いた。私は__init__メソッドから最初の引数equipamento_idも削除しなければなりませんでした。もう一度、ありがとう。 – user2466766

関連する問題