Я создал Django форму, которая работает нормально, но когда я пытаюсь обновить ее, она не сохраняет данные в базу данных.
Когда я размещаю данные через форму модели django, она работает нормально, но когда я обновляю данные с помощью той же формы, она не работает. Пожалуйста, помогите мне с этим, а также когда я обновляю форму, все поля заполняются, но не поле изображения. Он работал нормально, когда я обновлял форму несколько дней назад, но сейчас он не работает. Я удалил миграции и базу данных, но все равно не работает. Жду вашей помощи, спасибо заранее.
вот мой код:
views.py (для создания)
def dashboard_employees_create(request):
if not (request.user.is_authenticated and request.user.is_superuser and request.user.is_staff):
return redirect('/')
if request.method == 'POST':
form = EmployeeCreateForm(request.POST,request.FILES)
if form.is_valid():
instance = form.save(commit = False)
user = request.POST.get('user')
assigned_user = User.objects.get(id = user)
instance.user = assigned_user
instance.title = request.POST.get('title')
instance.image = request.FILES.get('image')
instance.firstname = request.POST.get('firstname')
instance.lastname = request.POST.get('lastname')
instance.reporting_to = request.POST.get('reporting_to')
instance.startdate = request.POST.get('startdate')
instance.employeetype = request.POST.get('employeetype')
instance.employeeid = request.POST.get('employeeid')
instance.dateissued = request.POST.get('dateissued')
instance.save()
messages.success(request,'Account Created Successfully!!',extra_tags = 'alert alert-warning alert-dismissible show')
return redirect('dashboard:employees')
else:
messages.error(request,'Trying to create dublicate employees with a single user account ',extra_tags = 'alert alert-warning alert-dismissible show')
return redirect('dashboard:employeecreate')
dataset = dict()
form = EmployeeCreateForm()
dataset['form'] = form
dataset['title'] = 'Register Employee'
return render(request,'dashboard/employee_create.html',dataset)
views.py для обновления: (результат - "Form Data not Valid")
def employee_edit_data(request,id):
if not (request.user.is_authenticated and request.user.is_superuser and request.user.is_staff):
return redirect('/')
employee = get_object_or_404(Employee, id = id)
if request.method == 'POST':
form1 = EmployeeCreateForm(request.POST or None,request.FILES or None,instance = employee)
if form1.is_valid():
instance = form1.save(commit = False)
user = request.POST.get('user')
assigned_user = User.objects.get(id = user)
instance.user = assigned_user
instance.title = request.POST.get('title')
instance.image = request.FILES.get('image')
instance.firstname = request.POST.get('firstname')
instance.lastname = request.POST.get('lastname')
instance.reporting_to = request.POST.get('reporting_to')
instance.startdate = request.POST.get('startdate')
instance.employeetype = request.POST.get('employeetype')
instance.employeeid = request.POST.get('employeeid')
instance.dateissued = request.POST.get('dateissued')
instance.save()
messages.success(request,'Account Created Successfully!!',extra_tags = 'alert alert-warning alert-dismissible show')
return redirect('dashboard:employees')
else:
messages.error(request,'Error Updating account',extra_tags = 'alert alert-warning alert-dismissible show')
return HttpResponse("Form data not valid")
dataset = dict()
form = EmployeeCreateForm(request.POST or None,request.FILES or None,instance = employee)
dataset['form'] = form
dataset['title'] = 'Edit - {0}'.format(employee.get_full_name)
return render(request,'dashboard/employee_create.html',dataset)
forms.py
class EmployeeCreateForm(forms.ModelForm):
employeeid = forms.CharField(widget=forms.TextInput(attrs={'placeholder':'please enter 5 characters without ZP or slashes eg. A0025'}))
image = forms.ImageField(widget=forms.FileInput(attrs={'onchange':'previewImage(this);'}))
class Meta:
model = Employee
exclude = ['is_blocked','is_deleted','created','updated']
widgets = {
'bio':forms.Textarea(attrs={'cols':5,'rows':5})
}