Как остановить удаление полей при обновлении в Django?

У меня есть страница обновления формы. Изначально я просто использовал поля даты, но пользователь попросил включить переключатель дат, поэтому я перешел к приведенному ниже коду. Теперь каждый раз, когда я обновляю поле даты (скажем, дата платежа 3), оно обновляется нормально, но при этом удаляются другие поля даты. Есть идеи, почему? Я новичок в виджетах DateInput().

В файле views.py:

def ParticipantPayments(request, pk):
    page_heading = "Update Participant's Payments"
    order = Order.objects.get(pk=pk)

    payment = ParticipantPayment.objects.get(customer=order.customer)

    customer = int(order.customer.id)
    firstname = payment.customer.first_name
    lastname = payment.customer.last_name

    form = UpdatePaymentForm(instance=payment)
    if request.method == 'POST':
        form = UpdatePaymentForm(request.POST, request.FILES, instance=payment)

        if form.is_valid():
            form.save()
            messages.info(request, 'Your  Form has been successfully submitted. ')

            return redirect('finance_participants')


    context = {'form':form,'customer':customer,'page_heading': page_heading, 'order':order,
        'firstname':firstname, 'lastname':lastname}
return render(request, 'accounts/part_payments.html', context)

В файле models.py:

class ParticipantPayment(models.Model):
   #other code not relevant
    customer = models.ForeignKey(Customer, on_delete= models.CASCADE, null = True)

    fee = models.IntegerField(verbose_name = "Registration Fee", blank=False, default = 750)
    currency = models.CharField(verbose_name = "Currency", max_length=10, null=True, choices=MONEY,default='GBP')

    crowd_fund = models.DecimalField(verbose_name = "Crowd Fund Amount", max_digits=5,decimal_places=2, default = 0)
    ir_discount = models.DecimalField(verbose_name = "Euro Discount Amount", max_digits=5,decimal_places=2, default = 0)
    bursary = models.DecimalField(verbose_name = "Bursary Amount", max_digits=5,decimal_places=2, default = 0)

    payment_1_amount =  models.DecimalField(max_digits=5, decimal_places=2, default = 0)
    payment_1_date = models.DateField(null=True,blank=True)

    payment_2_amount =  models.DecimalField(max_digits=5, decimal_places=2, default = 0)
    payment_2_date = models.DateField(null=True,blank=True)

    payment_3_amount =  models.DecimalField(max_digits=5, decimal_places=2, default = 0)
    payment_3_date = models.DateField(null=True,blank=True)

    payment_4_amount =  models.DecimalField(max_digits=5, decimal_places=2, default = 0, null=True,blank=True)
    payment_4_date = models.DateField(null=True,blank=True)

    payment_5_amount =  models.DecimalField(max_digits=5, decimal_places=2, default = 0, null=True,blank=True)
    payment_5_date = models.DateField(null=True,blank=True)

    payment_6_amount =  models.DecimalField(max_digits=5, decimal_places=2, default = 0, null=True,blank=True)
    payment_6_date = models.DateField(null=True,blank=True)

    note = models.CharField(max_length=1000, null=True,blank=True)
    refund_amount =  models.DecimalField(max_digits=5, decimal_places=2, default = 0)
    refund_date = models.DateField(null=True,blank=True)

    def fee_owing(self):
        return self.fee - self.crowd_fund - self.ir_discount- self.bursary

    def total_paid(self):
        return self.crowd_fund + self.ir_discount + self.bursary + self.payment_1_amount + self.payment_2_amount + self.payment_3_amount + self.payment_4_amount + self.payment_5_amount + self.payment_6_amount - self.refund_amount
    def part_balance(self):
        return self.fee - self.crowd_fund - self.ir_discount - self.bursary - self.payment_1_amount - self.payment_2_amount - self.payment_3_amount - self.payment_4_amount - self.payment_5_amount - self.payment_6_amount + self.refund_amount

    def __str__(self):
        return self.customer.last_name + ", " + self.customer.first_name

В файле forms.py:

class UpdatePaymentForm(ModelForm):
    class Meta:
        model = ParticipantPayment
        fields ='__all__'
        exclude = ['customer'] 
        widgets = {'payment_1_date' : DateInput(),
            'payment_2_date' : DateInput(),
            'payment_3_date' : DateInput(),
            'payment_4_date' : DateInput(),
            'payment_5_date' : DateInput(),
            'payment_6_date' : DateInput(),
        }

Я в полном тупике и буду признателен за любые предложения.

Я разобрался с этой проблемой и надеюсь, что решение поможет кому-то еще. Проблема заключается в настройках формата даты по умолчанию в Django, а не в виджете выбора даты. Поэтому я изменил настройки виджета в файле forms.py, чтобы включить:

widgets = {
    'payment_1_date': DateInput(),
    'payment_2_date': DateInput(format=('%Y-%m-%d')),
    ...

И это помогло разобраться с проблемой. Дайте мне знать, если вы найдете более простой вариант.

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