Django - 自定义userprofile NoSuchTable错误

时间:2016-06-13 17:47:35

标签: python django

我在django写一个应用程序。我想在User模型中添加一些自定义字段。

我一直在关注本指南:

http://www.tangowithdjango.com/book/chapters/login.html

登录工作正常,但在执行注册方法时,我的网站会抛出

  

在/ register / no中的OperationalError没有这样的表:mun_userprofile

型号:

from __future__ import unicode_literals
from django.contrib.auth.models import User
from django.db import models

# Create your models here.
class UserProfile(models.Model):
    #Link
    user = models.OneToOneField(User)
    #Extras
    adress = models.CharField(max_length = 50, blank = True)
    city = models.CharField(max_length = 50, blank = True)
    zip_code = models.CharField(max_length = 5, blank = True)

    #Override
    def __unicode__(self):
        return self.user.username

形式:

from mun.models import UserProfile
from django.contrib.auth.models import User
from django import forms

class UserForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput())

    class Meta:
        model = User
        fields = ('username', 'email', 'password')

class UserProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ('adress', 'city', 'zip_code')

注册方法:

def register(request):
    context = RequestContext(request)
    registered = False

    if request.method == 'POST':
        user_form = UserForm(data=request.POST)
        profile_form = UserProfileForm(data=request.POST)

        if user_form.is_valid() and profile_form.is_valid():
            user = user_form.save()
            user.set_password(user.password)
            user.save()

            profile = profile_form.save(commit=False)
            profile.user = user
    -->>>   profile.save() ######## Error is thrown at this line #######
            registered = True
        else:
            print user_form.errors, profile_form.errors

    else:
        user_form = UserForm()
        profile_form = UserProfileForm()

    return render_to_response(
            'mun/register.html',
            {'user_form': user_form, 'profile_form': profile_form, 'registered': registered},
            context)

我尝试过迁移。我删除了我的sqlite数据库,它stil没有帮助。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:-1)

我修好了。我的错误是我认为

  

python manage.py migrate

  

python manage.py makemigrations

会为我做一切。事实证明我必须使用

  

python manage.py makemigrations appname

     

python manage.py migrate

现在它有效。

愚蠢的错误。