新規にユーザー登録する際、新しく作られるユーザーモデルを参照しているモデル(ユーザープロファイルなど)も同時に保存しておきたい場合があるかと思います。ログインしている場合であればUserモデルは簡単に取り出せますが、新規ユーザー登録の場合は少し工夫する必要があります。
以下にクラスベースビューでのそのやり方を書きましたが、このやり方のポイントは先にUserモデルを保存させてから追加で保存するモデルを保存する手順を踏むということです。なお以下の例ではUserモデルはカスタム想定です。
my_app.models
from django.db import models from .models import User #カスタムユーザーモデル class MyUser(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) #カスタムユーザーと紐付け name = models.CharField(max_length=20)
my_app.views
from django.views.generic import CreateView from accounts.forms import RegisterForm from django.urls import reverse from .models import User from .models import MyUser from django.http import HttpResponseRedirect class Register(CreateView): template_name = "register.html" model = User form_class = RegisterForm def form_valid(self, form): super().form_valid(form) #先に親クラスのform_validを実行しUserモデルを保存させる my_user = MyUser() t = self.request.POST["key"] #キーとなるデータをrequestから取り出す my_user.user = User.objects.get(key=t) #キーを使ってUserオブジェクトを取り出しセットする my_user.save() return HttpResponseRedirect(self.get_success_url()) def get_success_url(self): return reverse('register_done')