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

Implement custom DateColumn improving null values handling

Sergio Saucedo 4 лет назад
Родитель
Сommit
8fc605037a
2 измененных файлов с 19 добавлено и 3 удалено
  1. 0 3
      netbox/circuits/tables.py
  2. 19 0
      netbox/utilities/tables.py

+ 0 - 3
netbox/circuits/tables.py

@@ -140,9 +140,6 @@ class CircuitTable(BaseTable):
         template_code=CIRCUITTERMINATION_LINK,
         verbose_name='Side Z'
     )
-    install_date = tables.DateColumn(
-        default=''
-    )
     commit_rate = CommitRateColumn()
     comments = MarkdownColumn()
     tags = TagColumn(

+ 19 - 0
netbox/utilities/tables.py

@@ -4,10 +4,12 @@ from django.contrib.auth.models import AnonymousUser
 from django.contrib.contenttypes.fields import GenericForeignKey
 from django.contrib.contenttypes.models import ContentType
 from django.core.exceptions import FieldDoesNotExist
+from django.db.models import DateField
 from django.db.models.fields.related import RelatedField
 from django.urls import reverse
 from django.utils.safestring import mark_safe
 from django_tables2 import RequestConfig
+from django_tables2.columns import library
 from django_tables2.data import TableQuerysetData
 from django_tables2.utils import Accessor
 
@@ -205,6 +207,23 @@ class TemplateColumn(tables.TemplateColumn):
         return ret
 
 
+@library.register
+class DateColumn(tables.DateColumn):
+    """
+    Overrides the default implementation of DateColumn to better handle null values, returning a default value for
+    tables and null when exporting data. It is registered in the tables library to use this class instead of the
+    default, making this behavior consistent in all fields of type DateField.
+    """
+
+    def value(self, value):
+        return value
+
+    @classmethod
+    def from_field(cls, field, **kwargs):
+        if isinstance(field, DateField):
+            return cls(**kwargs)
+
+
 class ButtonsColumn(tables.TemplateColumn):
     """
     Render edit, delete, and changelog buttons for an object.