Многозначная ошибка Django При передаче файла типа ввода

#python #django #sqlite

Вопрос:

Я получаю эту ошибку, когда пытаюсь передать значение папки в другой html. введите описание изображения здесь

Я сохранил форму в базе данных в браузере БД Sqlite. Я пытаюсь передать входной тип = файл в другой HTML. Так что, когда я просмотрю существующий файл типа=, файл будет автоматически показан.
Ниже приведено приложение от submitclaim.html

  <form action="/newclaim/" method="post" enctype="multipart/form-data">
    <label for="receipt">Receipt:  </label> <br>
    <input id="receipt" type="file" name="receipt_field">
</form>
 

Это мое verfiyexistingclaims.html

  <form method="POST" action="/verifyexistingclaims/{{claims.id}}" enctype="multipart/form-data">
    <label for="receipt">Receipt: </label>
    <input id="receipt" type="file" name="receipt" value={{claims.receipt}}>
</form>
 

Это мое views.py

 def financeverifyclaims(request, id):
    context = initialize_context(request)
    user = context["user"]

    # get original object
    claims = SaveClaimForm.objects.get(id=id)

    if request.method == "POST":

        # update original object

        claims.receipt = request.FILES["receipt"]

        # save it with original `ID`
        claims.save()

    return render(
        request, "Login/verifyexistingclaims.html", {"claims": claims, "user": user}
    )
 

Models.py

 from django.db import models
from django.core.validators import FileExtensionValidator

# Create your models here.
class SaveClaimForm(models.Model):
   
    receipt = models.FileField(upload_to='receipts/%Y/%m/%D', validators=[FileExtensionValidator(allowed_extensions=['jpg','png'])])
 

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

1. используется request.FILES.get('receipt') для проверки наличия или отсутствия квитанции .

2. У меня ничего не получается @Vishal

3. Кто-нибудь знает, как это решить?

4. что вы хотите делать, когда квитанции нет?

5. Я хочу сделать загрузку квитанции обязательной

Ответ №1:

Вы должны указать значение по умолчанию, если оно не существует, т. е.:

claims.receipt = request.FILES.get('receipt', False)

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

1. После того, как я отправлю фотографии, они все еще будут отображаться?