Начальные значения, инициализированные с помощью 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
остаются неизменными. Что не так?