I am working on a Django project using standard models and ModelForms. I have the following models and forms:
# models.py
class ApplicationCore(TimestampedModel):
user = models.ForeignKey(User, related_name="applications", on_delete=models.PROTECT)
organization = models.ForeignKey(Organization, related_name="applications", on_delete=models.PROTECT)
overall_status = models.TextField(choices=ApplicationOverallStatus.choices, default=ApplicationOverallStatus.in_progress.value)
class Meta:
abstract = True
...
class Application(ApplicationCore):
applicant = models.OneToOneField(ApplicantInformation, null=True, on_delete=models.PROTECT)
item_one = models.OneToOneField(ApplicationItemOne, null=True, on_delete=models.PROTECT)
item_two = models.OneToOneField(ApplicationItemTwo, null=True, on_delete=models.PROTECT)
...
class ApplicationItemOne(ApplicationItemCore):
choice = models.TextField(choices=ApplicationItemOneChoice.choices, null=True, blank=True)
co_applicants = models.ForeignKey(ApplicantInformation, null=True, related_name="item_ones", on_delete=models.PROTECT)
# forms.py
class ApplicationForm(forms.ModelForm):
has_item_one = False
has_item_two = False
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.has_item_one = self.instance.item_one_id is not None
self.has_item_two = self.instance.item_two_id is not None
class Meta:
model = Application
fields = ('applicant',)
class ApplicationItemOneForm(forms.ModelForm):
class Meta:
model = ApplicationItemOne
fields = '__all__'
When I try to run any Django command e.g. python manage.py makemigrations I get the following error:
File "/home/noah/dev/github/silica/silica-docs/django/sample-app/application/urls.py", line 5, in \<module\>
from application import views
File "/home/noah/dev/github/silica/silica-docs/django/sample-app/application/views.py", line 7, in \<module\>
from application.forms import CreateApplicationForm
File "/home/noah/dev/github/silica/silica-docs/django/sample-app/application/forms.py", line 19, in \<module\>
class ApplicationForm(forms.ModelForm):
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/forms/models.py", line 261, in __new__
fields = fields_for_model(
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/forms/models.py", line 183, in fields_for_model
formfield = f.formfield(\*\*kwargs)
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/db/models/fields/related.py", line 1060, in formfield
return super().formfield(\*\*kwargs)
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/db/models/fields/related.py", line 991, in formfield
'queryset': self.remote_field.model.\_default_manager.using(using),
AttributeError: 'NoneType' object has no attribute 'using'
Reading through the trace, it appears that the issue is ...model._default_manager returning None. What I can't figure out is why that is happening. It also happens if I comment out the ApplicationForm above, erroring on ApplicationItemOneForm.
Full stack trace:
Traceback (most recent call last):
File "manage.py", line 21, in \<module\>
main()
File "manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
utility.execute()
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/core/management/__init__.py", line 413, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/core/management/base.py", line 354, in run_from_argv
self.execute(\*args, \*\*cmd_options)
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/core/management/base.py", line 393, in execute
self.check()
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/core/management/base.py", line 419, in check
all_issues = checks.run_checks(
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/core/checks/registry.py", line 76, in run_checks
new_errors = check(app_configs=app_configs, databases=databases)
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/core/checks/urls.py", line 13, in check_url_config
return check_resolver(resolver)
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/core/checks/urls.py", line 23, in check_resolver
return check_method()
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/urls/resolvers.py", line 416, in check
for pattern in self.url_patterns:
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/utils/functional.py", line 48, in __get__
res = instance.__dict__\[self.name\] = self.func(instance)
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/urls/resolvers.py", line 602, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/utils/functional.py", line 48, in __get__
res = instance.__dict__\[self.name\] = self.func(instance)
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/urls/resolvers.py", line 595, in urlconf_module
return import_module(self.urlconf_name)
File "/home/noah/.pyenv/versions/3.8.10/lib/python3.8/importlib/__init__.py", line 127, in import_module
return \_bootstrap.\_gcd_import(name\[level:\], package, level)
File "\<frozen importlib.\_bootstrap\>", line 1014, in \_gcd_import
File "\<frozen importlib.\_bootstrap\>", line 991, in \_find_and_load
File "\<frozen importlib.\_bootstrap\>", line 975, in \_find_and_load_unlocked
File "\<frozen importlib.\_bootstrap\>", line 671, in \_load_unlocked
File "\<frozen importlib.\_bootstrap_external\>", line 848, in exec_module
File "\<frozen importlib.\_bootstrap\>", line 219, in \_call_with_frames_removed
File "/home/noah/dev/github/silica/silica-docs/django/sample-app/config/urls.py", line 23, in \<module\>
path('', include("application.urls")),
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/urls/conf.py", line 34, in include
urlconf_module = import_module(urlconf_module)
File "/home/noah/.pyenv/versions/3.8.10/lib/python3.8/importlib/__init__.py", line 127, in import_module
return \_bootstrap.\_gcd_import(name\[level:\], package, level)
File "\<frozen importlib.\_bootstrap\>", line 1014, in \_gcd_import
File "\<frozen importlib.\_bootstrap\>", line 991, in \_find_and_load
File "\<frozen importlib.\_bootstrap\>", line 975, in \_find_and_load_unlocked
File "\<frozen importlib.\_bootstrap\>", line 671, in \_load_unlocked
File "\<frozen importlib.\_bootstrap_external\>", line 848, in exec_module
File "\<frozen importlib.\_bootstrap\>", line 219, in \_call_with_frames_removed
File "/home/noah/dev/github/silica/silica-docs/django/sample-app/application/urls.py", line 5, in \<module\>
from application import views
File "/home/noah/dev/github/silica/silica-docs/django/sample-app/application/views.py", line 7, in \<module\>
from application.forms import CreateApplicationForm
File "/home/noah/dev/github/silica/silica-docs/django/sample-app/application/forms.py", line 19, in \<module\>
class ApplicationForm(forms.ModelForm):
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/forms/models.py", line 261, in __new__
fields = fields_for_model(
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/forms/models.py", line 183, in fields_for_model
formfield = f.formfield(\*\*kwargs)
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/db/models/fields/related.py", line 1060, in formfield
return super().formfield(\*\*kwargs)
File "/home/noah/.virtualenvs/sample-app/lib/python3.8/site-packages/django/db/models/fields/related.py", line 991, in formfield
'queryset': self.remote_field.model.\_default_manager.using(using),
AttributeError: 'NoneType' object has no attribute 'using'