Django сохранение формы с внешним ключом

В настоящее время я пытаюсь создать форму, в которой пользователи должны заполнить свои данные после создания учетной записи. Идея заключается в том, что каждый пользователь после регистрации перенаправляется на страницу этой формы, чтобы заполнить ее. Для достижения этой цели я использую внешние ключи, но они не сохраняются в базе данных.

models.py

class User(AbstractUser):
    pass
    def __str__(self):
        return self.username

class Detail(models.Model):
   user = models.ForeignKey(User, on_delete=models.CASCADE, null=False, default="")
   first_name = models.CharField(max_length=200, default="")
   last_name = models.CharField(max_length=255, default="")

   class Meta:
        verbose_name_plural = "Detail"

   def __str__(self):
    return self.first_name+ " "+self.last_name

forms.py

class Details(forms.ModelForm):
   class Meta:
    model = Detail
    fields = "__all__"
    widgets={
        "user": forms.TextInput()
    }

views.py

def details(request):
    if request.method =="POST":
        form = Details(request.POST)
        if form.is_valid():
            detail = form.save(commit=False)
            detail.user = request.user
            detail.first_name = detail.first_name.lower()
            detail.last_name = detail.last_name.lower()
            detail.save()
            return redirect("admin:index")
    else:
        form = Details(initial={"user":request.user.username})
    return render(request, "details.html", {"form":form})

Вам нужно исключить поле пользователя из ModelForm следующим образом

form.py

class Details(forms.ModelForm):
   class Meta:
    model = Detail
    fields = "__all__"
    exclude =["user"]

views.py

def details(request):
    if request.method =="POST":
        form = Details(request.POST)
        if form.is_valid():
            detail = form.save(commit=False)
            detail.user = request.user
            detail.first_name = detail.first_name.lower()
            detail.last_name = detail.last_name.lower()
            detail.save()
            return redirect("admin:index")
    else:
        form = Details()
    return render(request, "details.html", {"form":form})
Вернуться на верх