web-dev-qa-db-ja.com

「ラベル 'admin'のアプリがインストールされていません」を実行中Django=移行。アプリは正しくインストールされています

Django 1.7でのデータ移行中にadmin.LogEntryオブジェクトを使用しようとしています

'Django.contrib.admin'アプリはINSTALLED_APPS

シェルでは、次のように機能します。

>>> from Django.apps import apps
>>> apps.get_model('admin', 'LogEntry')
Django.contrib.admin.models.LogEntry

ただし、移行中に失敗します。

def do_it(apps, schema_editor):
    LogEntry = apps.get_model('admin', 'LogEntry')

このように失敗します:

Django-admin migrate
(...)
LookupError: No installed app with label 'admin'.

デバッガを使用して、「admin」がインストールされていないことがわかりました:

ipdb> apps.get_apps()
[]
ipdb> apps.all_models.keys()
['website', 'google', 'allauth', 'Twitter', 'busca', 'conteudo', 'Django_mobile', 'Django_filters', 'videocenter', 'tinymce', 'oferta', 'programacaotv', 'contenttypes', 'suit', 'haystack', 'destaque', 'filer', 'galeria', 'auth', 'facebook', 'paintstore', 'critica', 'disqus', 'fichas', 'omeletop', 'autocomplete_light', 'modelsv1', 'temas', 'Django_extensions', 'adv_cache_tag', 'taggit', 'social', 'personalidade']

なぜ??

24
alanjds

Django doc で明確になります:

RunPython関数が、移行が配置されているアプリ以外のモデルを使用する場合、移行の依存関係属性には、関連する各アプリの最新の移行が含まれている必要があります。そうでない場合は、次のようなエラー:LookupError:ラベル 'myappname'のインストール済みアプリがありませんRunPython関数を使用してapps.get_model()

コード例:

# Imports are omitted for the sake of brevity

def move_m1(apps, schema_editor):
    LogEntry = apps.get('admin.logentry')
    # Other business logic here ...


class Migration(migrations.Migration):

    dependencies = [
        ('app1', '0001_initial'),

        # Below is the manually added dependency, so as to retrieve models
        # of 'Django.contrib.admin' app with apps.get_model() in move_m1().
        #
        # Currently this is for Django 1.11. You need to look into
        # 'Django/contrib/admin/migrations' directory to find out which is
        # the latest migration for other version of Django.
        ('admin', '0002_logentry_remove_auto_add'),
    ]

    operations = [
        migrations.RunPython(move_m1),
    ]
18
Rockallite

これの正確な原因はわかりません。ソースコードを掘り下げる必要があります。現時点では、回避策は('admin', 'name_of_last_migration_in_admin_app')依存関係と移行に問題はありません。

9
JV.

同じエラーが発生しました(ただし、問題の問題とは無関係です)。 mysql dbを使用していましたが、mysqlクライアントがありませんでした。

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'Django.db.backends.mysql',
        # other details like name, user, Host
    }
}

Mysqlclientをインストールしました(ubuntuとPython3):

Sudo apt-get install libmysqlclient-dev
Sudo apt-get install python3-dev
pip install mysqlclient

私は同様のエラーを受け取っていて、私はまったくの初心者プログラマーです。私のために働いた1つのソリューションは、sqlparseをインストールすることでした。試して

pip install sqlparse

2
Rohan Gaikwad

スタックトレースをさらに調べてみてください。ロガーの構成が正しくないためにこのエラーが発生しましたが、この問題を見つけるにはトレースをさらに調べる必要がありました!

私の場合、環境変数Django_LOG_LEVLとしてDEGUBの代わりにDEBUG(スペルミスに注意)とエラーの原因となった。

1
Colton Hicks

私の場合、モデルを変更して「related_name」を追加したが、makemigrationsを実行して移行しなかったため、LookupErrorが発生していました。

0
steve serria

私にとっては

raise LookupError(message)

LookupError:ラベル「admin」のアプリがインストールされていません。

そして、私はubuntu 16.04を使用してすべての要件を手動でインストールするpipによってそれを解決します

0
Yuvaraj K

また、「no install app label 'admin'」という同じエラーが発生しました。 pip install sqlparseコマンドを実行することで解決できました

0
user11581168