Issue #5353
Updated by ttereshc about 5 years ago
If you create a relation (foreign key, onetoone, manytomany) in a plugin to any model redefined in a Remote or Publisher imported from plugin API (pulpcore.plugin.models), the following error occurs: <pre> $ django-admin makemigrations Traceback (most recent call last): File "/usr/local/lib/pulp/bin/django-admin", line 11, in <module> sys.exit(execute_from_command_line()) File "/usr/local/lib/pulp/lib64/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line utility.execute() File "/usr/local/lib/pulp/lib64/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/pulp/lib64/python3.6/site-packages/django/core/management/base.py", line 323, in run_from_argv self.execute(*args, **cmd_options) File "/usr/local/lib/pulp/lib64/python3.6/site-packages/django/core/management/base.py", line 361, in execute self.check() File "/usr/local/lib/pulp/lib64/python3.6/site-packages/django/core/management/base.py", line 390, in check include_deployment_checks=include_deployment_checks, File "/usr/local/lib/pulp/lib64/python3.6/site-packages/django/core/management/base.py", line 377, in _run_checks return checks.run_checks(**kwargs) File "/usr/local/lib/pulp/lib64/python3.6/site-packages/django/core/checks/registry.py", line 72, in run_checks new_errors = check(app_configs=app_configs) File "/usr/local/lib/pulp/lib64/python3.6/site-packages/django/core/checks/model_checks.py", line 168, in check_lazy_references return _check_lazy_references(apps) File "/usr/local/lib/pulp/lib64/python3.6/site-packages/django/core/checks/model_checks.py", line 163, in _check_lazy_references )), key=lambda error: error.msg) File "/usr/local/lib/pulp/lib64/python3.6/site-packages/django/core/checks/model_checks.py", line 162, in <genexpr> for func in apps._pending_operations[model_key] File "/usr/local/lib/pulp/lib64/python3.6/site-packages/django/core/checks/model_checks.py", line 157, in build_error return error_fn(model_key, func, args, keywords) if error_fn else None File "/usr/local/lib/pulp/lib64/python3.6/site-packages/django/core/checks/model_checks.py", line 107, in field_error 'model': '.'.join(model_key), TypeError: sequence item 0: expected str instance, NoneType found </pre> The reason is that those models are [re]defined in pulpcore-plugin, and have no app_label attached to them. This causes django lazy reference checks to fail at the migration generation time. The workaround is to import directly from the pulpcore. <pre> from pulpcore.plugin.models import Remote print(Remote._meta.app_label) # None from pulpcore.app.models import Remote print(Remote._meta.app_label) # 'core' </pre> Affected models (basically all models in pulpcore-plugin): - Content - ContentGuard - Remote - Publisher