quot;No installed app with label #39;admin#39;quot; running Django migration. The app is installed correctly(“没有安装带有‘admin’标签的应用程序运行 Django 迁移.该应用程序已正确安装)
问题描述
我正在尝试在 Django 1.7 上进行数据迁移期间使用 admin.LogEntry
对象
I am trying to use admin.LogEntry
objects during a datamigration on Django 1.7
'django.contrib.admin'
应用程序列在 INSTALLED_APPS
上.
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')
这样失败:
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']
为什么??
推荐答案
Django doc 说得很清楚:
当编写一个 RunPython 函数使用来自迁移所在应用之外的其他应用的模型时,迁移的 dependencies 属性应包含每个应用的最新迁移,否则当您尝试使用 RunPython 函数检索模型时,您可能会收到类似于:LookupError: No installed app with label 'myappname'strong>apps.get_model().
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().
代码示例:
# 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),
]
这篇关于“没有安装带有‘admin’标签的应用程序"运行 Django 迁移.该应用程序已正确安装的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:“没有安装带有‘admin’标签的应用程序"运行 Django 迁移.该应用程序已正确安装


基础教程推荐
- 将 YAML 文件转换为 python dict 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01