2016-06-13 3 views
0

私はdjangoでアプリを書いています。私はいくつかのカスタムフィールドをUserモデルに追加したいと思っていました。Django - カスタムuserprofile NoSuchTableエラー

私は、次のしてきたこのガイド:

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

ログインが正常に動作しますが、registerメソッドを実行しながら、私のウェブサイトは、/登録/いいえ、そのようなテーブルで

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データベースを削除し、それが役に立たない。なぜこのようなことが起こるのか?

+0

生成されたSQLクエリを確認し、そのテーブルが存在するかどうかを確認できます。他のデータベースを使用している可能性はありますか? DBの設定も確認してください。 –

答えて

-1

私はそれを修正しました。私のミスは私が

Pythonは

のpython manage.py makemigrations

が私のために全力を尽くします移行manage.pyのことを想定していることでした。それが判明したように、私は

のpython manage.py makemigrationsが

のpythonをappnameの使用していた

、今それが動作を移行manage.pyの。

愚かな間違い。

+0

'python manage.py makemigrations appname'は指定された' appname'のためだけにマイグレーションを生成するので、 'python manage.py makemigrations'は' INSTALLED_APPS '。最初に 'migrate'より' makemigrations'を実行してください。あなたが逆を行ったなら(あなたの答えに述べたように)、それはより良い推論かもしれません。 –

関連する問題