簡體   English   中英

Django 使用 userprofile 擴展用戶(錯誤:用戶沒有配置文件。)

[英]Django extending user with userprofile (error: User has no profile.)

在此處輸入圖片說明 有人可以告訴我,為什么這段代碼不起作用? 我正在嘗試為用戶創建一個注冊表單。

我收到一個錯誤

“RelatedObjectDoesNotExist at /signup/client/2/ 用戶沒有個人資料。”

視圖.py

if request.POST:
            user_form = UserCreationForm(request.POST)
            profile_form = ProfileForm(request.POST)
            if user_form.is_valid() and profile_form.is_valid():
                user = user_form.save()
                user.profile.city="WW"
                user.profile.phone="32323"
                user.profile.save()

表格.py

class UserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'email')

class ProfileForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ( 'city', 'phone')

html文件

  <h2>Sign up</h2>
  <form method="post">
    {% csrf_token %}
    {{ user_form.as_p }}
    {{ profile_form.as_p }}
    <button type="submit">Sign up</button>

模型.py

from __future__ import unicode_literals
from django.contrib.auth.models import User
from django.db import models
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)
    city = models.TextField(max_length = 50)
    phone = models.TextField(max_length = 12)

您需要創建一個profile ,當您保存user_form時它不會被創建

        user_form = UserCreationForm(request.POST)
        profile_form = ProfileForm(request.POST)
        if user_form.is_valid() and profile_form.is_valid():
            user = user_form.save()
            Profile.objects.create(**{
                 'city':"WW", 'phone': '32323', 'user': user
            })
            # ^^^^^^

您應該將以下行添加到腳本中:

profile = Profile.objects.create(user=request.user)

我相信這段代碼是從“Django by Examples”中引用的。 如果是這樣,請轉到您的應用程序管理站點並在配置文件帳戶下手動添加配置文件,然后再次運行服務器。 這將解決問題。

在開發過程中,最好和最簡單的方法是:

  1. 在終端中創建另一個超級用戶 -$ python manage.py createsuperuser
  2. 使用新憑據登錄管理頁面
  3. 刪除舊管理員或在創建用戶配置文件模型之前可能已創建的任何用戶

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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