Django: переопределение __ init __ для пользовательских форм

dotenv.config() не будет перезаписывать переменные, если увидит, что они уже существуют в process.env (что им был назначен путь PM2 MYVAR=foo; node app.js.

Таким образом, envs процесса, установленные перед запуском, будут иметь приоритет .

Это на самом деле в README dotenv.

Что происходит с переменными среды, которые уже были установлены?

Мы никогда не будем изменять какие-либо переменные среды, которые имеют уже установлен. В частности, если в вашем файле .env есть переменная, которая сталкивается с той, которая уже существует в вашей среде, то эта переменная будет пропущена. Это поведение позволяет переопределить все конфигурации .env с помощью машинно-зависимой окружающей среды, хотя это и не рекомендуется.

https://www.npmjs.com/package/dotenv#what-happens-to-environment-variables-that-were-already-set

blockquote>

Если вам нужно как-то изменить это поведение, есть также пакет dotenv-override.

21
задан Bora 20 December 2015 в 21:39
поделиться

2 ответа

Вы можете динамически изменять форму с помощью dict self.fields . Что-то вроде этого может сработать для вас:

class TicketForm(forms.Form):

  Type = Type.GetTicketTypeField()

  def __init__(self, ticket, *args, **kwargs):
    super(TicketForm, self).__init__(*args, **kwargs)
    self.fields['state'] = State.GetTicketStateField(ticket.Type)
39
ответ дан 29 November 2019 в 20:32
поделиться

Я нашел решение здесь . Если есть лучшее решение, отправьте ответ.

class TicketForm(forms.Form):
    Type = Type.GetTicketTypeField()

    def __init__(self, ticket=None, *args, **kwargs):   
        super(TicketForm, self ).__init__(*args, **kwargs)
        if ticket:
            self.fields['State'] = State.GetTicketStateField(ticket.Type)
3
ответ дан 29 November 2019 в 20:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: