Django UpdateView FileField не разворачивается в форме

model.py

class Payments(models.Model):
    
       STATUS_CHOICES = (
                        ('', 'Нажмите на поле, чтобы выбрать статус оплаты'),  
                        ('true', 'да'),
                        ('false', 'нет'),
                        )

  CHOICES_NAME_SERVICE = (('','Нажмите на поле, чтобы выбрать вид услуги'),
                    ('Коммунальная услуга','Коммунальная услуга'),
                    ('Капитальный ремонт','Капитальный ремонт'),)
                                          
  flats=models.ForeignKey(Flat,on_delete=models.PROTECT)
  name_flat=models.CharField(max_length=60, )
  name_service=models.CharField(max_length=30,choices=CHOICES_NAME_SERVICE)
  slug=models.SlugField(max_length=60)
  amount_of_bill=models.DecimalField(max_digits=10,decimal_places=2)
  amount_of_real=models.DecimalField(max_digits=10,decimal_places=2)
  date_of_bill=models.DateField()
  date_of_payment=models.DateField(auto_now_add=True)
  status_payment=models.CharField(max_length=5,choices=STATUS_CHOICES,)
  comments=models.TextField(blank=True)
  bill_save_pdf=models.FileField(upload_to='Bill_pdf/%d/%m/%Y/')

  def __str__(self) -> str:
     return f'{self.name_flat}'


  class Meta:
     ordering=['name_flat']

  def save(self, *args, **kwargs):
    self.slug = slugify(self.name_service)
    super().save(*args, **kwargs) 

  def delete(self, *args, **kwargs):
    self.bill_save_pdf.delete()
    super().delete(*args, **kwargs) 

view.py

class UpdatePayments(UpdateView):
    model=Payments
    form_class=PaymentsForm
    template_name='myflat/add_payment.html'
    context_object_name='name_flat'
    
    def get_success_url(self):
        print(self.object.pk)
        return reverse('HistoryPamentsByService' ,kwargs= 
        {'slug':self.object.slug,'flats_id': self.object.flats_id})
    

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        payment=Payments.objects.get(pk=self.kwargs['pk'])
        context['form']=PaymentsForm(instance=payment)
        print(self.request.POST)
        return context

forms.py

class PaymentsForm(forms.ModelForm):

class Meta:
    model=Payments
    fields=['name_service','amount_of_bill','amount_of_real',
             'date_of_bill','status_payment',
             'comments','bill_save_pdf']
  
    labels = {
        'name_service': ('Название услуги'),
        'amount_of_bill': ('Сумма счета'),
        'amount_of_real': ('Оплачено'),
        'date_of_bill': ('Дата счета'),
        'status_payment': ('Статус оплаты'),
        'comments': ('Комментарий'),
        'bill_save_pdf': ('Счет'),
    }
    widgets={
        'name_service':forms.Select(attrs={"class":"form-control"}),
        'amount_of_bill':forms.NumberInput( 
         attrs={"class":"form-control",'placeholder':'Сумма счета 0.00руб'}),
        'amount_of_real':forms.NumberInput(
         attrs={"class":"form-control",'placeholder':'Оплачено 0.00руб'}),
        'date_of_bill':forms.DateInput(format=('%Y-%m-%d'),
         attrs={"class":"form-control",'placeholder':'Дата счета','type':'date'}),
        'status_payment':forms.Select(choices=(('','None'),),
         attrs={"class":"form-control"},),
        'comments':forms.Textarea(
         attrs={"class":"form-control",'placeholder':'Комментарий...','rows':2}),
        'bill_save_pdf':forms.FileInput(
         attrs={"class":"form-control",'placeholder':'Счет'}),
         }

urls.py

urlpatterns = [
    path('',CreateNewFlat.as_view(),name='CreateFlat'),
    path('list_flats',ListCreatedFlats.as_view(),name='ListCreatedFlats'),
    path('add_payment/<int:pk>/',AddPayment.as_view(),name='AddPayment'),
    path('group_payments/',GroupPayments.as_view(),name='GroupPayments'),
    path('history_by_service/<slug:slug>/<int:flats_id>/',
          HistoryPamentsByService.as_view(),name='HistoryPamentsByService'),
    path('UpdatePayments/<int:pk>/',UpdatePayments.as_view(),name='UpdatePayments'),
    path('DelPayment/<int:pk>/',DelPayment.as_view(),name='DelPayment'),
]

history_by_service.html

{% extends "base.html" %}

{% block title %}
История платежей по видам услуг
{% endblock title %}

{% block sidebar %}
<table class="table table-lg table-hover">
  <thead>
    <tr>
      <th scope="col">#</th>
      <th scope="col">Название квартиры</th>
      <th scope="col">Услуга</th>
      <th scope="col">Сумма по счету</th>
      <th scope="col">Сумма оплачена</th>
      <th scope="col">Дата счета</th>
      <th scope="col">Статус оплаты</th>
      <th scope="col">Комментарий</th>
      <th scope="col">Счет</th>
      <th scope="col">Редактировать</th>
      <th scope="col">Удалить оплату</th>
    </tr>
  </thead>
  <tbody>
    {% for flat in flats  %}
     <form method="post" enctype="multipart/form-data">
      {% csrf_token %} 
    <tr>
      <th scope="row">{{ forloop.counter }} </th>
      <td>{{flat.name_flat}}</td>
      <td>{{flat.name_service}}</td>
      <td>{{flat.amount_of_bill}}</td>
      <td>{{flat.amount_of_real}}</td>
      <td>{{flat.date_of_bill}}</td>
      <td>{{flat.get_status_payment_display}}</td>
      <td>{{flat.commnts}}</td>
      <td>{{flat.bill_save_pdf}}</td>
      <td>
        <button type='submit' class="btn btn-success btn-sm" formaction="{% url 'UpdatePayments' flat.pk %}">update</button>
      </form>
      </td>
      <td>
      <form method="post" action="{% url 'DelPayment' flat.pk %}">
        {% csrf_token %}
        <button type='submit' class='btn btn-danger btn-sm'>delete</button>
      </form>
      </td>
    </tr>
    {% endfor %}
  </tbody>
</table>
{% endblock sidebar %}

add_payment.html

{% extends "base.html" %}
{% block title %}
Оплата по квартире {{name_flat}}
{% endblock title %}

{% block content %}
<div class="d-flex flex-row justify-content-center mt-3">
    <form class="row" method="post" enctype="multipart/form-data">
    {%csrf_token%}
        <div class="row">
            <div class="col">
                <h2>{{name_flat}}</h2>
            </div>
        </div>
        <div class="row">
            <div class="col-auto">
                    {{ form.as_p}}
                    <div class="row justify-content-end">
                    <div class="col-auto">
                    <button type="submit" class="btn btn-primary mb-3">Save</button>
                    </div>
                    </div>     
            </div>
        </div>   
    </form>  
{% endblock content %}

это изображение history_by_service.html

enter image description here

потом нажимаем обновить картинку у меня есть форма без заполненного поля FileField

enter image description here

какой код нужно добавить в UpdateView, чтобы получить заполненное поле FileField в форме?

большое спасибо!!!

что я хочу получить ниже: enter image description here

Вернуться на верх