[Django3.0]独自のユーザ情報編集ページの作成

まず編集用の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

続いてパスワード変更!