Мой код не работает при обновлении записи в django
Я делаю систему управления сотрудниками на django. Я создал все поля create, read, delete и filter, но я не могу написать поле update. пожалуйста, кто-нибудь помогите мне.
Это мой файл views.py
def update_emp(request,emp_id=0):
context={}
obj= get_object_or_404(Employee, id=emp_id)
# obj=Employee.objects.get(id=emp_id)
form = employeeForm(request.POST or None, instance = obj)
if form.is_valid():
form.save()
return HttpResponseRedirect('/'+id)
context['form'] = form
return render(request, 'update_emp.html' ,context)
Это мой файл urls.py
from django.urls import path , include
from . import views
urlpatterns = [
path('', views.index, name = 'index'),
path('all_emp', views.all_emp, name = 'all_emp'),
path('add_emp', views.add_emp, name = 'add_emp'),
path('remove_emp', views.remove_emp, name = 'remove_emp'),
path('remove_emp/<int:emp_id>', views.remove_emp, name = 'remove_emp'),
path('filter_emp', views.filter_emp, name = 'filter_emp'),
# path('update_emp', views.update_emp, name = 'update_emp'),
path('update_emp/<int:id>', views.update_emp, name='update_emp'),
]
Это мой файл update_emp.html
<div class="main">
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Update">
</form>
Это мой файл forms.py
from django import forms
class employeeForm(forms.Form):
fname=forms.CharField(label="Value1",required=False,widget=forms.TextInput(attrs={'class':'form-control'}))
lname=forms.CharField(label="Value2",required=True,widget=forms.TextInput(attrs={'class':'form-control'}))
Вы должны использовать forms.ModelForm
, если хотите сохранить экземпляр модели.
Ваша форма сотрудника не связана с моделью, поэтому ей нечего сохранять.
Вам стоит попробовать что-то подобное.
class EmployeeForm(forms.ModelForm):
model = Employee
fields = ['fname', 'lastname']