私はdjangoとsouthを理解しようとしていますが、stale contenttype
問題が発生したようです-SOまたはGoogleで修正を見つけることができません。
したがって、まず、django==1.6 に単純なプロジェクトを作成し、インストール済みのアプリに次の内容を含めます。
INSTALLED_APPS = (
'django.contrib.auth',
'django_browserid', # Load after auth
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sitemaps',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'south',
)
AUTH_USER_MODEL = 'auth.User'
これで実行し、syncdb
この段階ではスーパーユーザーを作成しません。
ここで、新しいアプリloginapp
を作成しAbstractUser
、次のように作成します。
#loginapp/models.py
class MyUser(AbstractUser):
is_admin_enabled = models.BooleanField(default=True) # new field
私のsettings.pyで次を変更します。
AUTH_USER_MODEL = "loginapp.MyUser"
今、ログインアプリで実行します(辞書に追加loginapp
しますINSTALLED_APPS
):
python manage.py schemamigration loginapp --initial && python manage.py migrate loginapp
..これまでのところすべて問題ありません-南がデータベースに新しいユーザーモデルを作成したことがわかります。
ここで、戻っsyncdb
て自分のプロジェクトを実行すると、次のようになります。
The following content types are stale and need to be deleted:
auth | user
Any objects related to these content types by a foreign key will also
be deleted. Are you sure you want to delete these content types?
If you're unsure, answer 'no'.
..ユーザーモデルが変更され、デフォルトモデルが廃止されたことをdjangoが認識していると思います。ここで「yes」を使用してみましたが、DB テーブルがまだ存在していることがわかります。おそらく、syncdb がデータベース テーブルを削除しないためです。
そもそも上記の問題を回避するにはどうすればよいですか?loginapp
サウスを使用して、DBのデフォルトのdjangoユーザーモデルではなく、自分で定義されたユーザーモデルが必要です。
この問題を解決するための手がかり/方向性を本当に感謝します。