Просмотр исходного кода

Fixes #4617: Restore IP prefix depth notation in list view

Jeremy Stretch 5 лет назад
Родитель
Сommit
e0ebb8e7d8
3 измененных файлов с 10 добавлено и 2 удалено
  1. 1 0
      docs/release-notes/version-2.8.md
  2. 2 0
      netbox/ipam/tables.py
  3. 7 2
      netbox/utilities/tables.py

+ 1 - 0
docs/release-notes/version-2.8.md

@@ -12,6 +12,7 @@ v2.8.4 (FUTURE)
 * [#4604](https://github.com/netbox-community/netbox/issues/4604) - Multi-position rear ports may only be connected to other rear ports
 * [#4607](https://github.com/netbox-community/netbox/issues/4607) - Missing Contextual help for API Tokens
 * [#4613](https://github.com/netbox-community/netbox/issues/4613) - Fix tag assignment on config contexts (regression from #4527)
+* [#4617](https://github.com/netbox-community/netbox/issues/4617) - Restore IP prefix depth notation in list view
 * [#4629](https://github.com/netbox-community/netbox/issues/4629) - Replicate assigned interface when cloning IP addresses
 * [#4633](https://github.com/netbox-community/netbox/issues/4633) - Bump django-rq to v2.3.2 to fix ImportError with rq 1.4.0
 * [#4634](https://github.com/netbox-community/netbox/issues/4634) - Inventory Item List view exception caused by incorrect accessor definition 

+ 2 - 0
netbox/ipam/tables.py

@@ -378,6 +378,8 @@ class PrefixTable(BaseTable):
         verbose_name='Pool'
     )
 
+    add_prefetch = False
+
     class Meta(BaseTable.Meta):
         model = Prefix
         fields = ('pk', 'prefix', 'status', 'vrf', 'tenant', 'site', 'vlan', 'role', 'is_pool', 'description')

+ 7 - 2
netbox/utilities/tables.py

@@ -1,6 +1,5 @@
 import django_tables2 as tables
 from django.core.exceptions import FieldDoesNotExist
-from django.db.models import ForeignKey
 from django.db.models.fields.related import RelatedField
 from django.utils.safestring import mark_safe
 from django_tables2.data import TableQuerysetData
@@ -9,7 +8,13 @@ from django_tables2.data import TableQuerysetData
 class BaseTable(tables.Table):
     """
     Default table for object lists
+
+    :param add_prefetch: By default, modify the queryset passed to the table upon initialization to automatically
+      prefetch related data. Set this to False if it's necessary to avoid modifying the queryset (e.g. to
+      accommodate PrefixQuerySet.annotate_depth()).
     """
+    add_prefetch = True
+
     class Meta:
         attrs = {
             'class': 'table table-hover table-headings',
@@ -50,7 +55,7 @@ class BaseTable(tables.Table):
                 self.sequence.append('actions')
 
         # Dynamically update the table's QuerySet to ensure related fields are pre-fetched
-        if isinstance(self.data, TableQuerysetData):
+        if self.add_prefetch and isinstance(self.data, TableQuerysetData):
             model = getattr(self.Meta, 'model')
             prefetch_fields = []
             for column in self.columns: