Implement custom DateColumn improving null values handling

This commit is contained in:
Sergio Saucedo 2022-02-08 01:26:26 -06:00
parent 31c58409e1
commit 8fc605037a
2 changed files with 19 additions and 3 deletions

View File

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

View File

@ -4,10 +4,12 @@ from django.contrib.auth.models import AnonymousUser
from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import FieldDoesNotExist from django.core.exceptions import FieldDoesNotExist
from django.db.models import DateField
from django.db.models.fields.related import RelatedField from django.db.models.fields.related import RelatedField
from django.urls import reverse from django.urls import reverse
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django_tables2 import RequestConfig from django_tables2 import RequestConfig
from django_tables2.columns import library
from django_tables2.data import TableQuerysetData from django_tables2.data import TableQuerysetData
from django_tables2.utils import Accessor from django_tables2.utils import Accessor
@ -205,6 +207,23 @@ class TemplateColumn(tables.TemplateColumn):
return ret 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): class ButtonsColumn(tables.TemplateColumn):
""" """
Render edit, delete, and changelog buttons for an object. Render edit, delete, and changelog buttons for an object.