Делаю формочку для редактирования объекта бд, хочу сделать так, чтобы при открытии страницы с формой в ней уже были данные. Передаю в instance нужный объект, но значения отображаются только в полх NumberField, Select и TextInput.
При этом в дебагере при инициализации формы и в return значения values заполнены у всех полей.
Подозреваю, что дело здесь в стилях бутстрапа, а может и нет.
Кто уже сталкивался с такой проблемой, подскажите что делать?
forms.py
class EditPriceForm(forms.ModelForm):
class Meta:
model = PriceList
fields = [
'dateBegin',
'dateEnd',
'cena',
'flCancel',
'idVallet'
]
widgets = {
'idVallet': forms.Select(attrs={
'class': 'form-control'
}),
'dateBegin': forms.DateInput(attrs={
'class': 'form-control',
'type': 'date',
'data-inputmask-alias': 'datetime',
'data-inputmask-inputformat': 'dd/mm/yyyy',
'data-mask': '',
}),
'dateEnd': forms.DateInput(attrs={
'class': 'form-control',
'type': 'date',
'data-inputmask-alias': 'datetime',
'data-inputmask-inputformat': 'dd/mm/yyyy',
'data-mask': '',
}),
}
def __init__(self, *args, **kwargs):
super(EditPriceForm, self).__init__(*args, **kwargs)
self.fields['cena'].widget = forms.NumberInput(attrs={'class': 'form-control'})
self.fields['flCancel'].widget = forms.CheckboxInput(attrs={'class': 'form-control'})
views.py
@login_required
def EditPriceView(request, objId):
if request.method == 'POST':
form = EditPriceForm(request.POST)
if form.is_valid():
obj = PriceList.objects.get(id=objId)
obj.cena = form.cleaned_data['cena']
obj.dateBegin = form.cleaned_data['dateBegin']
obj.dateEnd = form.cleaned_data['dateEnd']
obj.flCancel = form.cleaned_data['flCancel']
obj.idVallet = form.cleaned_data['idVallet']
obj.summaRub = obj.cena + ((obj.cena/100)*2)
obj.save()
return redirect('/base/edit_nomenkl/'+str(obj.idNomenkl.id))
if request.method == 'GET':
form = EditPriceForm(instance=PriceList.objects.get(id=objId))
return render(request, 'editPrice.html', {
'form': form,
'objId': objId
})