django-tables2 icon indicating copy to clipboard operation
django-tables2 copied to clipboard

Rendering a callable attribute value in a LinkColumn

Open alexey-nikolov-basemark-com opened this issue 3 years ago • 1 comments

Working example:

class OverviewTable(django_tables2.Table):
    label = django_tables2.LinkColumn(
        'details',
        args=[django_tables2.utils.A('pk')],
        attrs = {'td': {'id': lambda value: value}},
    )

Expected to work but not working example:

class OverviewTable(django_tables2.Table):
    label = django_tables2.LinkColumn(
        'details',
        args=[django_tables2.utils.A('pk')],
        attrs = {'a': {'id': lambda value: value}},
    )

Raises TypeError: <lambda>() missing 1 required positional argument: 'value' at this point: https://github.com/jieter/django-tables2/blob/7a30b0a1d8ab78f010df91af8fd5d31e411b8122/django_tables2/utils.py#L468

Surely, the documentation doesn't directly suggest that it works, but it seems reasonable to assume. Also the documentation doesn't give a clue that a callable is even supported here. Seems like an unfinished effort to make it work?

Yes, I agree this is inconstant and should be improved.

Pull requests adding the improvement with documentation an tests welcome!

jieter avatar Dec 26 '22 09:12 jieter