[英]Django User Profile Model Sign Up Form
我正在開發Django項目。
現在,我正在使用個人資料模型注冊表單。
但是我有一個問題。
models.py:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
usernickname = models.CharField(db_column='userNickName', max_length=50, blank=True, null=True)
userbirth = models.DateField(db_column='userBirth', blank=True, null=True)
class Meta:
managed = False
db_table = 'profile'
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
print(instance)
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
form.py:
from django import forms
from django.contrib.auth.models import User
class UserForm(forms.ModelForm):
userBirth = forms.DateField()
class Meta:
model = User
fields = ('username', 'password', 'userBirth')
widgets = {
'username': forms.TextInput(),
'password': forms.PasswordInput(),
'userBirth': forms.DateField(),
}
views.py:
def join(request):
if request.method == "POST":
userForm = UserForm(request.POST, prefix='user')
profileForm = ProfileForm(request.POST, prefix='profile')
if userForm.is_valid() * profileForm.is_valid():
user = userForm.save()
profile = profileForm.save(commit=False)
profile.user = user
profile.save()
return redirect('index')
else:
userForm = UserForm()
profileForm = ProfileForm()
return render_to_response('registration/join.html',dict(userform=userForm,
profileform=profileForm))
當注冊時,
在/ join /處的InternalError(1054,“字段列表中的未知列'profile.user_id'”))
該錯誤返回。
登錄到/ admin時,返回相同的錯誤。 我不知道
我引用了這個博客:
如果您已經擁有模型配置文件-然后添加
db_column = $ {USER ID DB COLUMN NAME}在用戶字段上,
如果否-在Meta中將managed set設置為True。
另外,您可以使用related_name ='profile'從用戶那里獲取配置文件實例。
Django嘗試通過user_id列接受配置文件實例,但無法識別它。
在個人資料表格的forms.py中,我認為您需要添加“用戶”字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.