Я чувствую, что упускаю очевидное, но не могу разобраться!
Я написал пользовательскую форму (для использования вне администратора django), которую я хочу использовать для создания / обновленияэкземпляры ряда экземпляров модели, а также содержат условные поля.Однако я, похоже, теряю свои условные данные.
На мой взгляд, я создаю экземпляр своей формы и передаю его в контекст запроса: -
view.py
form = MyForm(my_bool=True, pid=7)
render(request 'my_page.html', {'form': form})
forms.py
class MyForm(forms.Form):
def __init__(self, *args, **kwargs):
my_bool = kwargs.pop('my_bool', False)
self.pid = kwargs.pop('pid', None)
super(MyForm, self).__init__(*args, **kwargs)
if my_bool:
self.fields['textbox'] = forms.CharField(max_length=256)
Все отлично работает и форма отображается как и ожидалось.Теперь, когда я отправляю форму, она попадает ниже
view.py
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
# Do Stuff
Моя проблема заключается в том, что объект формы в приведенном выше коде не содержит мои «текстовое поле» или «pid»поля, хотя форма, которую я представил, сделал.Я уверен, что все, что я делаю неправильно, чрезвычайно очевидно, но из-за большого количества поиска в Google я не могу найти простой способ создания формы, передать ей некоторые данные о том, какие поля я хочу показать, а также сказать идентификатормодель, которую я, в конце концов, хочу обновить, а затем получить доступ к информации, которую я передал в пост-части кода.
Часть # Do Stuff моего кода должна принимать 'pid', который я передалформу и использовать ее для получения продукта, например Product.objects.get (pk = pid), однако без сохранения pid в сеансе я не могу понять, как получить к нему доступ из обратной передачи.
Если проверкав моей форме происходит ошибка, т.е. form.is_valid () возвращает false. Я снова отправляю запрос, передавая уже имеющуюся форму, таким образом я вижу ошибки проверки, однако любые условные поля, которые я передал изначально, отсутствуют и их значения игнорируются.
Может быть, я просто ошибаюсь, и мне следует поступить иначе.Я пытаюсь достичь формы ввода контента, поля которой меняются в зависимости от типа продукта, который он передает, после заполнения формы данные сохраняются в этом экземпляре продукта.
Любая помощь будет в значительной степениценим, я обнаружил, что Django очень любезен ко всему, что я к нему так приложил, и это похоже на такой общий случай использования, что я просто должен делать это неправильно!
Я нахожусь наDjango v1.11 и Python v3.6.