Django forms.py инициализирован неправильно?
У меня есть представление django, сообщающее предпочтительный язык пользователя для формы в forms.py. Однако эта форма, кажется, инициализируется еще до того, как я ее назову.
Кажется, что класс SurveyForm() загружается до моего вызова из views.py и даже до того, как активируется функция инициализации SurveyForms().
Вот код:
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 ответ
Все на уровне класса выполняется при определении класса при первом импорте. Вы уже знаете, как делать вещи во время инстанции - делая это в __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 = ...