0

我的表单需要来自 request 变量的数据,request.LANGUAGE_CODE但 forms.py 文件没有任何获取 request 变量的方法。

我使用“set_language 重定向视图”来设置语言,它工作正常,但我需要为表单随机生成一个选择下拉列表,我根本无法让 django 给我使用的语言代码。

下面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
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 回答
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 回答