Есть страница с таблицей, в которой находятся объекты базы данных. Я хочу сделать так, чтобы при клике на запись в этой таблице открывалось новое окно с формой редактирования этого объекта бд. Все настроил кроме отображения уже имеющихся полей формы. Дело в том, что форма отображается пустой, а в ней (по логике) должны быть уже заполненные поля, чтобы видеть что редактируешь. Подскажите как лучше передать значение из объекта в поле формы. Пробовал создавать форму во view и передавать ей объект как instance, но почему-то подтягиваются только текстовые поля.
views.py
@login_required
def EditProjectView(request):
obj = Project.objects.get(id=request.GET.get('objId'))
form = EditProjectForm(instance=obj, objId=obj.id)
return render(request, 'editProject.html', {
'form': form
})
forms.py
class EditProjectForm(forms.ModelForm):
class Meta:
model = Project
fields = [
'name',
'number',
'idKontr',
'idTip',
'idStatus',
'idKv',
'description'
]
widgets = {
'idKontr': forms.Select(attrs={
'class': 'form-control'
}),
'idTip': forms.Select(attrs={
'class': 'form-control'
}),
'idStatus': forms.Select(attrs={
'class': 'form-control'
}),
'idKv': forms.Select(attrs={
'class': 'form-control'
}),
}
objId = forms.IntegerField()
def __init__(self, *args, **kwargs):
super(EditProjectForm, self).__init__(*args, **kwargs)
self.fields['objId'].widget = forms.NumberInput(attrs={'class': 'd-none', 'id': 'edit_id_field'})
self.fields['name'].widget = forms.TextInput(attrs={'class': 'form-control'})
self.fields['description'].widget = forms.Textarea(attrs={'class': 'form-control'})
self.fields['name'].required = False
self.fields['number'].required = False
self.fields['idKontr'].required = False
self.fields['idTip'].required = False
self.fields['idStatus'].required = False
self.fields['idKv'].required = False
self.fields['description'].required = False