0

私のフォームにはリクエスト変数からのデータが必要ですrequest.LANGUAGE_CODEが、forms.pyファイルにはリクエスト変数を取得する方法がありません。

「set_languageリダイレクトビュー」を使用して言語を設定しましたが、正常に機能しますが、フォームの選択ドロップダウンをランダムに生成する必要があり、djangoで使用するlanguage_codeを取得できません。

以下のtranslation.get_language()コードスニペットで使用されているのは、「en-us」のみを返しますが、すべての言語に対してです。

class C21Form(ModelForm):
    principal_procedure_code= forms.ModelChoiceField(label=_('BlaBla'), queryset=diagCode.objects.filter(language=translation.get_language()))

アップデート:

forms.py

class C21Form(ModelForm):
    principal_procedure_code= forms.ModelChoiceField(label=_('BlaBla'), queryset=diagCode.objects.filter(language=language_code))

    def __init__(self, language_code=None, *args, **kwargs):
        self.language_code = language_code
        super(C21Form, self).__init__(*args, **kwargs)

views.py

 form = C21Form(request.LANGUAGE_CODE, request.POST)
4

2 に答える 2

0

フォームを初期化するときに変数を渡すことができます。

views.py:

form = C21Form(request.LANGUAGE_CODE, request.POST or None)

form.py:

def __init__(self, language_code=None, *args, **kwargs):
    self.language_code = language_code
    super(C21Form, self).__init__(*args, **kwargs)
于 2013-01-30T15:10:09.670 に答える
0
class C21Form(ModelForm):
    principal_procedure_code= forms.ModelChoiceField(label=_('BlaBla'), queryset=None)

    def __init__(self, language_code="hu", *args, **kwargs):
        super(C21Form, self).__init__(*args, **kwargs)
        self.fields['principal_procedure_code'].queryset = diagCode.objects.filter(language=language_code)

これは機能する方法です。最初に空のクエリセットを作成し、後でフィルタリングします。

于 2013-01-30T15:34:56.547 に答える