Это мой взгляд:
def my_view(request):
if request.method == 'GET':
form = MyForm(initial={'user': "my_user"})
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
print("form is valid")
else:
form = MyForm()
return render(request, 'my_template.html', {'form': form})
А это форма
class MyForm(forms.Form):
my_field = forms.CharField(max_length=100)
user = forms.CharField(widget=forms.HiddenInput())
def clean(self):
cleaned_data = super(MyForm, self).clean()
my_field = cleaned_data.get('my_field')
if not my_field:
raise forms.ValidationError('error')
На консоли ничего не напечатано (print("form is valid")
), поэтому форма недействительна,и эта проблема возникает из скрытого поля.
Когда я работаю без скрытых полей, форма действительна
Что не так с моим кодом?Как инициализировать значения скрытых полей из функции представления (или другим способом сделать это, не включая его в HTML)?