Django forms.py错误地初始化了?

时间:2016-01-24 20:28:14

标签: python django python-2.7 django-modeltranslation

我有一个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将获得荷兰语翻译。

1 个答案:

答案 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 = ...