Значение по умолчанию/Начальное значение для поля форм Django (обязательно=True) после отправки запроса (связанные формы)

#python #django

Вопрос:

Я перепробовал все решения здесь, на Stackoverflow, но все они используют required=False. Как я могу устанавливать значение по умолчанию для требуемого поля формы каждый раз, даже после запроса post (когда форма привязана)?

 # forms.py
class MyForm(forms.Form): 
   name = forms.CharField(required = True)

   def __init__(self, *args, **kwargs):
        
       super(editSonde_KundenAdminPanel, self).__init__(*args, **kwargs)
       self.initial['name'] = "foo bar"


#Views.py
def index(request):

   if request.method == 'GET':
        form = MyForm()

   if request.method == 'POST':
        form = MyForm(request.POST)
        #After this step, the form doesn't have an initial value anymore...
        if form.is_valid()
            #Do Stuff


 

Ответ №1:

В документации говорится о создании нового экземпляра формы.

Если у вас есть связанный экземпляр формы и вы хотите каким-то образом изменить данные или если вы хотите привязать несвязанный экземпляр формы к некоторым данным, создайте другой экземпляр формы. Невозможно изменить данные в экземпляре формы. После создания экземпляра формы вы должны считать его данные неизменяемыми, независимо от того, есть у него данные или нет.