Django — Почему эта форма недействительна, хотя в ней есть все поля?

#django

#django

Вопрос:

В моем проекте Django есть форма, в которой много полей, некоторые из которых являются FileFields. form.is_valid() Метод возвращает False , утверждая, что поля FileField пусты, но я загружаю их, и я знаю, что они получены, потому что, когда я печатаю результаты обоих request.POST.items() и request.FILES.items() , я получаю это:

 POST > ('csrfmiddlewaretoken', 'GXS7HcM4MS87EwqsNn0bLyo3CFGLxAEJqGiJHyG0uHRoALzySdVTteXcYvhkojTG')
POST > ('business_type', '0')
POST > ('rfc', 'FOVL950527261')
POST > ('full_name', 'Asdff Asdf Asdf')
POST > ('email', 'asdf@asdf.com')
POST > ('address', 'Sierra Madre Occidental #121 Colonia Lomas de San Francisco')
POST > ('private_phone', '4921055833')
POST > ('cellphone', '4921055833')
POST > ('business_name', 'MUNICIPIO DE JEREZ ZACATECAS')
POST > ('jobs_generated', '123')
POST > ('expected_investment', '123')
POST > ('gender', '0')
POST > ('age', '123')
POST > ('rfc_moral_person', 'FOV950527261')
POST > ('economic_sector', '0')
POST > ('address_street', 'Sierra Madre Occidental #121 Colonia Lom')
POST > ('address_number', '123')
POST > ('address_neighborhood', 'asfd')
POST > ('address_locality', 'Zacatecas')
POST > ('address_between_streets', '')
POST > ('amount_paid', '123')
POST > ('rfc_copy', '')
POST > ('constitutive_act_copy', '')

FILES > ('official_id_copy', <InMemoryUploadedFile: sare_logo_qJg0oPx.png (image/png)>)
FILES > ('business_address_voucher', <InMemoryUploadedFile: sare_logo_qJg0oPx.png (image/png)>)
FILES > ('legal_posession_voucher_copy', <InMemoryUploadedFile: sare_logo_qJg0oPx.png (image/png)>)
  

Моя форма — это только это:

 <form method="post" enctype="multipart/form-data">
     {% csrf_token %}

     {{ form|crispy }}

     <div class="border-top">
         <div class="card-body">
             {% block buttons %}
                 <button type="submit" class="btn btn-primary"><i class="fa fa-share"></i> {% trans "Enviar" %}
                 </button>
             {% endblock %}
         </div>
     </div>

 </form>
 {{ form.media }}
  

Я думаю, что я правильно получаю файлы, потому что я вижу их при печати запроса.FILES.items(), но методы form.is_valid говорят, что они отсутствуют.

Вы знаете, почему это может быть, какая другая вещь может дать сбой?

Комментарии:

1. Как ваше представление создает форму?

Ответ №1:

Не зная, как построена ваша функция просмотра, обязательно укажите файлы в качестве параметра для формы в вашей функции просмотра:

 def yourViewFunction(request):
    form = YourForm(request.POST, request.FILES)
    if form.is_valid():
        # rest of your code
  

Надеюсь, это решит вашу проблему.

Комментарии:

1. Точно, я только что это увидел, и это было так, у меня только что была форма = FormatUpdateForm (request.POST)