簡體   English   中英

Django用戶個人資料模型注冊表單

[英]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時,返回相同的錯誤。 我不知道

我引用了這個博客:

https://simpleisbetterthancomplex.com/tutorial/2017/02/18/how-to-create-user-sign-up-view.html#sign-up-with-profile-model

如果您已經擁有模型配置文件-然后添加

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM