Я создаю вьюху для редактирования объектов в таблице контактов, мне нужно добавить такой функционал, чтобы строки в табличке можно было менять по их айдишнику, но вместо этого Django создает новый объект, а не обновляет старый
Сама вьюха
def editContactView(request, key):
if request.method == 'POST':
form = EditContactForm(request.POST)
if form.is_valid():
contact = Contact.objects.get(id=key)
if form.cleaned_data['type']:
contact.type = form.cleaned_data['type']
if form.cleaned_data['subject']:
contact.subject = form.cleaned_data['subject']
if form.cleaned_data['info']:
contact.info = form.cleaned_data['info']
contact.save()
Форма в шаблоне
<form class="d-flex" method="post" action="">
{% csrf_token %}
{{ editContact.KEY }}
{{ editContact.subject }}
{{ editContact.type }}
{{ editContact.info }}
<button type="submit" class="btn btn-success">Изменить</button>
</form>
Форма в forms.py
class EditContactForm(ModelForm):
class Meta:
model = Contact
fields = ['KEY', 'info', 'type', 'subject']
widgets = {
'KEY': forms.NumberInput(attrs={
'placeholder': 'ID',
'class': 'form-control w-25'
}),
'info': forms.TextInput(attrs={
'placeholder': 'Данные контакта',
'class': 'form-control w-25'
}),
'type': forms.Select(attrs={
'class': 'form-control w-25'
}),
'subject': forms.Select(attrs={
'class': 'form-control w-25'
})
}
def __init__(self, *args, **kwargs):
super(EditContactForm, self).__init__(*args, **kwargs)
self.fields['info'].required = False
self.fields['type'].required = False
self.fields['subject'].required = False
Подскажите, что я делаю не так, как мне внести изменения в уже существующий объект?
Удалять старый и присваивать новому его ID я уже пробовал, он не присваивается