2016-11-09 8 views
2

をOneToOneField使用してUserモデルを拡張した後、「いいえ、そのようなテーブル」私はOneToOneField使用してユーザモデルを拡張する上でthisアドバイスに従うことをしようとしています。私のアプリの「投票」(はい、「公式」のチュートリアルで作成したアプリを拡張しています)では、各ユーザーに関する2つの追加情報、つまり文字列と数字を保存します。次ジャンゴ:(。ジャンゴ1.10)

from django.contrib.auth.models import User 

class Employee(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    stopien = models.CharField(max_length=100) 
    pensum = models.IntegerField() 

とadmin.pyに:私のmodels.pyで

私は今、以下の持っている

from django.contrib.auth.admin import UserAdmin as BaseUserAdmin 
from django.contrib.auth.models import User 

from polls.models import Employee 

class EmployeeInline(admin.StackedInline): 
    model = Employee 
    can_delete = False 
    verbose_name_plural = 'employee' 

class UserAdmin(BaseUserAdmin): 
    inlines = (EmployeeInline,) 

admin.site.unregister(User) 
admin.site.register(User, UserAdmin) 

私の2つの新しいフィールドが表示される管理パネルを使用してユーザーを追加します正しくしかし、私は、「保存」をクリックしたとき、または私はすべてのユーザーを追加し、ちょうど管理パネルでの私の唯一の管理者ユーザの名前をクリックしないと、私は次のエラーを取得する:

OperationalError at /admin/auth/user/1/change/ 
no such table: polls_employee 

私はいくつかを見ます同様の問題に関連する質問と回答がありますが、古いバージョンのDjangoには関係しているようです。誰が私に何をすべきかについてのヒントを教えてもらえますか?理想的には、管理パネルに2つの追加フィールドが表示されるようにしたいと思いますが、これは今後の課題かもしれません。

私はちょうど私が使用しているアドバイスは、次のマニュアルから、この段落を理解していない告白する必要があります。

をこれらのプロファイルモデルはどのような方法で特別ではありません - 彼らが持って起こるだけでDjangoのモデルですがUserモデルとの1対1リンク。このように、ユーザーが作成されますが、django.db.models.signals.post_saveを適宜関連するモデルを作成または更新するために使用することができたときにそれらが自動作成されません。

は、私が管理パネルのいくつかの要素にこの「ポストセーブ」を結ぶ必要がありますか?

私は任意の助けのために非常にGREATFULだろう!

答えて

3

makemigrationsを実行して新しいモデルの移行を作成し、次にmigrateを実行して移行を実行し、データベーステーブルを作成する必要があります。

./manage.py makemigrations 
./manage.py migrate 
+0

はどうもありがとうございました! –