Django forms.py 初始化错误?

Django forms.py initialized wrongly?

我有一个 django 视图将用户的首选语言环境传达给 forms.py 中的表单。但是,该表单似乎在我调用它之前就已经初始化了。

Class SurveyForm() 似乎在 before 我从 views.py 甚至 before 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 class 时,它确实有效。 当我将 translation.activate('nl') 放在 __init__views.py 中时,它不起作用。如何改变?

注意:我使用模型翻译,因此 Q1.name 将在荷兰语处于活动状态时获得荷兰语翻译。

class 级别的任何内容在定义 class 时在第一次导入时执行。您已经知道如何在实例化时执行操作 - 通过在 __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 = ...