“No installed app with label 'admin'” runn

2020-02-26 03:12发布

I am trying to use admin.LogEntry objects during a datamigration on Django 1.7

The 'django.contrib.admin' app is listed on INSTALLED_APPS.

On the shell, it works:

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

But during the migration, it fails:

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

Fails like this:

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

Using a debugger, I got that the 'admin' is not installed:

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']

WHY??

9条回答
爷的心禁止访问
2楼-- · 2020-02-26 03:42

For me it shows

raise LookupError(message)

LookupError: No installed app with label 'admin'.

and I solve it by pip installing every requirements manually I m using ubuntu 16.04

查看更多
劳资没心,怎么记你
3楼-- · 2020-02-26 03:43

I also had this same error of "no installed app label 'admin' ". I was able to solve it by running the pip install sqlparse command

查看更多
我命由我不由天
4楼-- · 2020-02-26 03:47

I got the error when I used 'required=False' in my model like this: slug = models.SlugField(required=False)

I changed it to: slug = models.SlugField(blank=True,null=True) and the error disappeared

查看更多
叼着烟拽天下
5楼-- · 2020-02-26 03:50

I don't know the exact cause for this. Will have to dig into the source code. but for now a workaround is add ('admin', 'name_of_last_migration_in_admin_app') to the dependencies and the migrations shall go alright.

查看更多
对你真心纯属浪费
6楼-- · 2020-02-26 03:56

I got the same error (but unrelated to the issue mentioned in question). I was using mysql db but there were no mysql client.

settings.py

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

I installed mysqlclient (In ubuntu & Python3):

sudo apt-get install libmysqlclient-dev
sudo apt-get install python3-dev
pip install mysqlclient
查看更多
做个烂人
7楼-- · 2020-02-26 04:03

The Django doc makes it clear:

When writing a RunPython function that uses models from apps other than the one in which the migration is located, the migration’s dependencies attribute should include the latest migration of each app that is involved, otherwise you may get an error similar to: LookupError: No installed app with label 'myappname' when you try to retrieve the model in the RunPython function using apps.get_model().

Code example:

# 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),
    ]
查看更多
登录 后发表回答