У меня есть этот класс, который работает как задумано
class UpdateView(TemplateView):
def get(self, request, username):
id = User.objects.get(username = username).id
user = get_object_or_404(User, id = id)
employee = get_object_or_404(Employee, user_id = id)
form_user = UserForm(instance=user)
form_employee = EmployeeForm(instance=employee)
args = {'form_user': form_user,'form_employee': form_employee, 'username': username}
return render(request, 'user/update.html', args)
def post(self, request, username):
id = User.objects.get(username = username).id
user = get_object_or_404(User, id = id)
employee = get_object_or_404(Employee, user_id = id)
form_user = UserForm(request.POST, instance=user)
form_employee = EmployeeForm(request.POST, instance=employee)
if form_user.is_valid() and form_employee.is_valid():
form_user.save()
form_employee.save()
return redirect('user:list')
args = {'form_user': form_user, 'form_employee': form_employee, 'username': username}
return render(request, 'user/update.html', args)
Моя проблема в том, что оба метода get и post используют одинаковые переменные id, user и employee.Как мне это исправить?
Я знаю, что могу создать метод рендеринга, например
def render(self, request, username):
args = {'form_user': form_user, 'form_employee': form_employee, 'username': username}
return render(request, 'user/update.html', args)
, а затем вызвать
return self.render(request)
в конце get иметоды post, поэтому мне не нужно определять аргументы дважды, но в настоящее время это конфликтует с именем пользователя.Вот почему я хочу сначала решить проблему с тремя переменными.