Django view не сохраняет изменения формы
Django 5.2, python 3.12.5 . Я использую встроенную пользовательскую модель, и при нажатии кнопки отправки не появляется никаких ошибок. Я создал представление на основе UpdateView и использую встроенную форму UserChangeForm. На самом деле форма возвращает 200 кодов ответа. Я подозреваю, что что-то не так с привязкой или сохранением формы, но я не вижу ошибок или предупреждений. URL-адреса в порядке. Другие мои формы входа / регистрации работают хорошо.
views.py
from django.views import generic
from django.contrib.auth import login
from django.contrib.auth.forms import AuthenticationForm, UserCreationForm, UserChangeForm
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.models import User
class ProfileView(generic.edit.UpdateView, LoginRequiredMixin):
template_name = 'users/profile.html'
form_class = UserChangeForm
success_url = '/profile/'
model = User
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = 'Profile | Jotter'
return context
def form_valid(self, form):
form.save()
return super().form_valid(form)
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs['instance'] = self.request.user
return kwargs
def get_object(self):
return self.request.user
profile.html
{% extends "base.html" %}
{% block content %}
<main class="py-5">
<div class="container">
<div class="row">
<form action="" method="post" class="col-md-6 mx-auto">
{% csrf_token %}
<h2 class="mb-5">Account details</h2>
<div class="row mb-4">
<div class="col-md-4 mx-2">
<label for="username_label" class="form-label">Username</label>
<input type="text" class="form-control" style="background: #dfdfdf;" id="username_label" name="username" value="{{form.username.value}}" readonly>
</div>
</div>
<div class="row mb-5">
<div class="col-md-4 mx-2">
<label for="first_name_label" class="form-label">First name</label>
<input type="text" class="form-control" id="first_name_label" name="first_name" value="{{form.first_name.value}}">
</div>
<div class="col-md-4 mx-2">
<label for="last_name_label" class="form-label">Last name</label>
<input type="text" class="form-control" id="last_name_label" name="last_name" value="{{form.last_name.value}}">
</div>
</div>
<div class="row">
<div class="col-md-4 mx-2">
<button type="submit" class="btn btn-primary">Save changes</button>
</div>
</div>
</form>
</div>
</div>
</main>
{% endblock content %}
Честно говоря, понятия не имею.