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 = ...
Другие вопросы по тегам