Не удается инициализировать скрытые поля в Django - PullRequest
0 голосов
/ 26 июня 2019

Это мой взгляд:

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)?

1 Ответ

0 голосов
/ 26 июня 2019

Решение на самом деле было связано не с моим видом или классом формы, а с шаблоном.Поэтому я публикую это, если кто-то пропустил: не забудьте включить скрытые поля в форму:

{% for hidden_field in form.hidden_fields %}
  {{ hidden_field }}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...