Сырой ввод записывается, но данные не сохраняются, выдавая ошибку "это поле обязательно для заполнения"

Для контекста, у меня есть форма, в которой пользователь заполняет данные о работе и может выбрать, кто был на этой работе из существующего списка работников, и ввести их часы, ставки и общую зарплату. Я реализовал скрипт, чтобы пользователь мог "добавить" в форму больше работников. Основная проблема заключается в том, что данные не сохраняются специально для поля часов и ставок, хотя поле зарплаты сохраняется, поэтому я не могу отправить всю форму. Учитывая, что JS находится на стороне клиента, скорее всего, это проблема django, но я все равно проверил это, избавившись от своего скрипта

Модель заработной платы:

class EmployeeWage(models.Model):
    job = models.ForeignKey(Operating_Budget, on_delete=models.CASCADE, null=True, blank=True)
    worker = models.ForeignKey(EmployeeRecord, on_delete=models.CASCADE, null=True, blank=True)
    wages = models.DecimalField(max_digits=10, decimal_places=2)
    hours = models.DecimalField(max_digits=10, decimal_places=2, default=0)
    rates = models.DecimalField(max_digits=10, decimal_places=2,default=0)

Вот моя форма заработной платы:

class WorkerWagesForm(forms.ModelForm):
    worker = forms.ModelChoiceField(queryset=EmployeeRecord.objects.all(), label="")
    wages = forms.DecimalField(label="", max_digits=10, decimal_places=2)
    hours = forms.DecimalField(label="", max_digits=10, decimal_places=2)
    rates = forms.DecimalField(label="", max_digits=10, decimal_places=2)

    class Meta:
        model = EmployeeWage
        fields = ('worker', 'wages', 'hours', 'rates')

class JobWorkerWageFormSetBase(BaseInlineFormSet):
    def clean(self):
        super().clean()
        for form in self.forms:
            if form.cleaned_data.get('hours') is None:
                form.add_error('hours', 'Hours are required.')
            if form.cleaned_data.get('rates') is None:
                form.add_error('rates', 'Rates are required.')
WorkerWagesFormSet = inlineformset_factory(Operating_Budget, EmployeeWage, formset = JobWorkerWageFormSetBase, fields=('worker', 'wages', 'hours', 'rates'), extra=1, can_delete=True)

И просмотр:

def addrev(request):
    
    
    if request.method == 'POST':
        print(request.POST)
        job_form = Revenue(request.POST)
        formset = WorkerWagesFormSet(request.POST, request.FILES)
        
        print(formset.data)

        if job_form.is_valid() and formset.is_valid():
            print("Job Form cleaned data:", job_form.cleaned_data)
            job = job_form.save()
            job_worker_wages = formset.save(commit=False)
            for job_worker_wage in job_worker_wages:
                job_worker_wage.job = job
                job_worker_wage.save()
                worker = job_worker_wage.worker
                if worker:
                    worker.job_completed += 1
                    worker.save()
                    print (worker)
        
            return redirect('revenue')
        else:
             print(formset.errors)
             print(job_form.errors)
        

    else:
        job_form = Revenue()
        formset = WorkerWagesFormSet()

    return render(request, 'addrev.html', {
        'job_form': job_form,
        'formset': formset,
    })

Вот сообщение об ошибке:

[{'hours': ['This field is required.', 'Hours are required.'], 'rates': ['This field is required.', 'Rates are required.']}]

Я несколько раз проверял, отличаются ли типы полей в моделях и формах, но не нашел никаких различий. Все остальные вводимые данные были корректны.

Любая помощь будет оценена по достоинству! Спасибо

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