我有一个django视图将用户的首选语言环境传递给forms.py中的表单。但是,在我打电话之前,这种形式似乎已经初始化了。
类SurveyForm()似乎在从调用之前加载来自views.py甚至之前 SurveyForms() init 函数变为活动状态。
以下是代码:
class SurveyForm(forms.Form):
questions = Question.objects.all()
Q1 = questions.get(identifier='Q1')
question1 = forms.CharField(required=False, label=Q1.name)
def __init__(self, *args, **kwargs):
translation.activate('nl')
当我将translation.activate('nl')
放入SurveyForm
课程时,它确实有效。
当我将translation.activate('nl')
放入__init__
或views.py
时,它不起作用。怎么能改变呢?
注意:我使用的是模型翻译,因此当荷兰语活跃时,Q1.name
将获得荷兰语翻译。
答案 0 :(得分:1)
在首次导入时定义类时,将执行类级别的任何操作。您已经知道如何在即时时间执行操作 - 通过__init__
方法执行此操作。
从您的问题中不清楚Q1
是什么。这是一个领域吗?如果是这样,您可以将其添加到self.fields
;否则只需将其直接设置在self
。
def __init__(self, *args, **kwargs):
translation.activate('nl')
super(SurveyForm, self).__init__(*args, **kwargs)
self.fields['Q1'] = ...
# or
self.Q1 = ...