まず編集用のformから作成します。モデルはauth.modelsのUserを使い、UserChangeFormを作ります。
from django.contrib.auth.models import User class UserChangeForm(forms.ModelForm): class Meta: model = User fields = ['username', 'last_name', 'first_name','email']
続いてviews.pyとurls.py
urlpatterns = [ // 省略 path('edit/<int:id>', views.edit, name='edit'), path('edit/<int:id>/complete', views.edit_complete, name='edit_complete'), ]
Userモデルの読み込みと、先ほど作成したUserChangeFormを使います。
from django.contrib.auth.models import User from .forms import UserChangeForm def edit(request, id): data = User.objects.get(id=id) params = { 'data': data, } return render(request, 'myapp/edit.html', params) def edit_complete(request, id): data = User.objects.get(id=id) if(request.method == 'POST'): user_data = UserChangeForm(request.POST, instance=data) if(user_data.is_valid()): user_data.save() return render(request, 'myapp/edit_complete.html') else: params = { 'data': request.POST, } return render(request, 'myapp/edit.html', params) return render(request, 'myapp/edit_complete.html')
template
変更が反映されています。
mysql> select * from auth_user;
| 15 | hoge | NULL | 0 | user8 | 後藤 | 三郎 | goto@gmail.com | 0 | 1 | 2020-10-11 14:48:35.000000
続いてパスワード変更!