Project

Profile

Help

Issue #5353

Updated by ttereshc 12 months ago

If you create a relation (foreign key, onetoone, manytomany) in a plugin to 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.


My guess would be that it's because of the use of @as@:https://github.com/pulp/pulpcore-plugin/blob/2226678355ac09efab689be5ed0633522c2bed5e/pulpcore/plugin/models/remote.py#L5

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>

Back