Django ignores your template settings by default when rendering forms.
The error it was giving was TemplateDoesNotExist
but the template definitely did exist. Thankfully, the dev server shows which loaders it tries to use and the order. Scanning through that it wasn't using any of my apps! What?
So apparently if you're rendering a form with a custom widget by default django won't use the TEMPLATES
configuration from the settings.py
file.
The default form renderer https://docs.djangoproject.com/en/3.1/ref/forms/renderers/#the-low-level-render-api needs changed to the TemplateSettings
renderer...
So just add this to your settings:
FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'
and add django.forms
to your installed apps as described here https://docs.djangoproject.com/en/3.1/ref/forms/renderers/#django.forms.renderers.TemplatesSetting.
And then it'll find the custom form field widget template...
Hope it helps, have a good one!