所以我想為每個新創建的用戶保存一個傳記。用戶可以輸入他的簡歷,并將其添加到他的個人資料中。
為此,我使用 OneToOneField 創建了一個模型
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class Profile(models.Model):
user = models.OneToOneField(
User, on_delete=models.CASCADE, null=True, blank=True)
bio = models.CharField(max_length=30)
要創建表單,我在 forms.py 中執行了以下操作:
class BioForm(forms.ModelForm):
class Meta:
model = Profile
fields = ('bio',)
然后我在views.py中創建了保存,所以bio會被保存到特定的用戶:
from .forms import LoginForm, RegisterForm
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout, get_user_model
from django.contrib.auth import get_user_model
def test_view(request):
form = BioForm(request.POST)
user = get_user_model
if form.is_valid():
profile = form.save(commit=False)
profile.user = request.user
profile.phone_number = request.phone_number
profile.save()
return render(request, 'test.html', {'form': form})
views.py 中有一些大問題,但我不明白。我可以提交表單并且表單將被保存(有時)但沒有撰寫它的用戶 我收到此錯誤:
ValueError at /test/
Cannot assign "<SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x00000253B7140D00>>": "Profile.user" must be a "User" instance
uj5u.com熱心網友回復:
嘗試分配用戶 ID
from .forms import LoginForm, RegisterForm
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout, get_user_model
from django.contrib.auth import get_user_model
def test_view(request):
form = BioForm(request.POST)
user = get_user_model
if form.is_valid():
profile = form.save(commit=False)
profile.user_id = request.user.id
profile.phone_number = request.phone_number
profile.save()
return render(request, 'test.html', {'form': form})
uj5u.com熱心網友回復:
您的問題是您嘗試保存的用戶不是資料庫中存在的經過身份驗證的用戶。只有經過身份驗證(登錄)的用戶存在于資料庫中,并且可以在關系欄位中使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/416018.html
標籤:
