我在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没有帮助。知道为什么会这样吗?
答案 0 :(得分:-1)
我修好了。我的错误是我认为
python manage.py migrate
和
python manage.py makemigrations
会为我做一切。事实证明我必须使用
python manage.py makemigrations appname
python manage.py migrate
现在它有效。
愚蠢的错误。