Project

Profile

Help

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

Back