Начальные значения, инициализированные с помощью JS, не изменяются при обновлении данных в Django Model Form

models.py

class Package(models.Model):
    patient=models.ForeignKey(Patient, on_delete=CASCADE)
    diagnosis=models.ForeignKey(Diagnosis, on_delete=CASCADE)
    treatment=models.ForeignKey(Treatment, on_delete=CASCADE)
    patient_type=models.ForeignKey(PatientType, on_delete=CASCADE)
    date_of_admission=models.DateField(default=None)
    max_fractions=models.IntegerField(default=None)
    total_package=models.DecimalField(max_digits=10, decimal_places=2)

Основываясь на treatment и patient_type, я хочу, чтобы max_fractions и total_package были заданы начальные значения. Для этого я написал JS-функцию:

forms.py

class PackageForm(ModelForm):
    class Meta:
        model=Package
        fields='__all__'
        widgets={
           "patient_type" : forms.Select(attrs={"onblur":"mf();"}),
           "max_fractions" : forms.NumberInput(attrs={"onfocus":"mf();", "onblur":"tp();"}),
           "total_package" : forms.NumberInput(attrs={"onfocus":"tp();", "onblur":"onLoad();"}),
           'date_of_admission': DateInput(attrs={'type': 'date'}),
        }

При создании экземпляра все работает нормально. Форма заполняет оба поля в соответствии с командами. Но когда я перехожу к обновлению данных в модели через:

def update_package_view(request, id):
    if request.method=='POST':
        print(request.POST)
        pkg=Package.objects.get(pk=id)
        print(pkg)
        form=PackageForm(request.POST, instance=pkg)
        print(form)
        if form.is_valid():
            form.save()
    else:
        pkg=Package.objects.get(pk=id)
        form=PackageForm(instance=pkg)
    return render(request, 'account/update_package.html', {'form':form})

Изменяю patient_type или treatment или оба, max_fractions и total_package остаются неизменными. Что не так?

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