diff --git a/netbox/utilities/jinja2.py b/netbox/utilities/jinja2.py index dd2f083ad..9f87d3f28 100644 --- a/netbox/utilities/jinja2.py +++ b/netbox/utilities/jinja2.py @@ -30,15 +30,14 @@ class DataFileLoader(BaseLoader): # Find and pre-fetch referenced templates if referenced_templates := tuple(find_referenced_templates(environment.parse(template_source))): if None in referenced_templates: - self.cache_templates({ - df.path: df.data_as_string for df in - DataFile.objects.filter(source=self.data_source) - }) - else: - self.cache_templates({ - df.path: df.data_as_string for df in - DataFile.objects.filter(source=self.data_source, path__in=referenced_templates) - }) + 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 related_files + }) return template_source, template, lambda: True