2015-04-10 15 views
9

Próbuję użyć admin.LogEntry obiektów podczas migracja danych na Django 1.7"Brak zainstalowanej aplikacji z etykietą" admin "" z uruchomioną migracją Django. Aplikacja jest zainstalowana poprawnie

Aplikacja 'django.contrib.admin' jest notowana na INSTALLED_APPS.

na powłoce, to działa:

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

Jednak podczas migracji, nie jest on:

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

zawodzi tak:

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

Korzystanie z debugera, mam że "admin" nie jest zainstalowany:

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

DLACZEGO ??

+2

Nie należy uruchamiać polecenia z 'Django admin' - użyć' manage.py', który określa ustawienia modułu wyraźnie. –

+0

Próbowano za pomocą 'manage.py'. Ten sam wynik. – alanjds

+0

... W każdym razie, zestaw DJANGO_SETTINGS_MODULE jest ustawiony prawidłowo na środowisko. – alanjds

Odpowiedz

9

Nie znam dokładnej przyczyny tego. Będzie musiał zagłębić się w kod źródłowy. ale na razie obejście to jest uzależnione od zależności, a migracja powinna przebiegać prawidłowo.

+0

W przypadku migracji między aplikacjami zasadne jest wymaganie jawnej zależności. W przeciwnym razie wykonywanie migracji w pustej bazie danych w kolejności alfabetycznej zakończy się niepowodzeniem. –

1

Django doc jasno:

przykład

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().

Kod:

class Migration(migrations.Migration): 

    dependencies = [ 
     ('app1', '0001_initial'), 
     # added dependency to enable using models from app2 in move_m1 
     ('app2', '0004_foobar'), 
    ] 

    operations = [ 
     migrations.RunPython(move_m1), 
    ] 
Powiązane problemy