Джанго не очищает определенные поля формы - PullRequest
0 голосов
/ 27 сентября 2018

Итак, моя форма выглядит следующим образом:

class Uploaded_Cisco_YML_Configs(forms.Form):
    uploaded_configs = forms.FileField()
    goto_model = forms.TextInput()
    interfaces_migrate = forms.Textarea()

Проблема, с которой я сталкиваюсь, состоит в том, что поля формы goto_model и interfaces_migrate определены в словаре form.data, однако их нет в форме form.cleaned_data, поэтомуЯ не могу получить к ним доступ должным образом.Есть ли какая-либо причина, по которой это может происходить?

HTML ниже

            <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <input id="uploaded_configs" name="uploaded_configs" type="file" multiple/>
        <br>
        New Model:<br>
        <input type="text" name="goto_model">
        <br>Interfaces to Migrate:
        <br>
        <input type="text" name="interfaces_migrate">
        <input type="submit" value="Run Script"/>
         </form>

А views.py ниже

form = Uploaded_Cisco_YML_Configs(request.POST, request.FILES)
        if form.is_valid():
            rebuild_args = []
            if form.goto_model is not None:
                print("#"*10)
                print(str(form.data))
                print(str(form.cleaned_data))

1 Ответ

0 голосов
/ 27 сентября 2018

TextInput и Textarea не являются полями формы, они являются виджетами.Вам необходимо определить поле и затем установить аргумент виджета, если необходимо.

class Uploaded_Cisco_YML_Configs(forms.Form):
    uploaded_configs = forms.FileField()
    goto_model = forms.CharField()
    interfaces_migrate = forms.CharField(widget=forms.Textarea())

(Вам не нужно устанавливать виджет для goto_model, так как TextInput является значением по умолчанию для CharField.)

Обратите внимание, что if form.goto_model is not None никогда не будет ложным, поскольку оно относится к определению поля , а не к значению;вам нужно было бы получить доступ к form.cleaned_data['goto_model'], но даже это бессмысленно, поскольку поле является обязательным и, следовательно, форма будет недействительной, если она пуста.

...