diff --git a/netbox/utilities/jinja2.py b/netbox/utilities/jinja2.py index cefb97831d9..cea8c9029ca 100644 --- a/netbox/utilities/jinja2.py +++ b/netbox/utilities/jinja2.py @@ -28,10 +28,14 @@ def get_source(self, environment, template): raise TemplateNotFound(template) # Find and pre-fetch referenced templates - if referenced_templates := find_referenced_templates(environment.parse(template_source)): + if referenced_templates := tuple(find_referenced_templates(environment.parse(template_source))): + related_files = DataFile.objects.filter(source=self.data_source) + # None indicates the use of dynamic resolution. If dependent files are statically + # defined, we can filter by path for optimization. + if None not in referenced_templates: + related_files = related_files.filter(path__in=referenced_templates) self.cache_templates({ - df.path: df.data_as_string for df in - DataFile.objects.filter(source=self.data_source, path__in=referenced_templates) + df.path: df.data_as_string for df in related_files }) return template_source, template, lambda: True