Add documentation on creating dashboard and datagrid columns.
Review Request #15063 — Created May 15, 2026 and updated
This introduces a guide for extension authors on how to create columns
for the Dashboard and other datagrids. This walks through creating a
simple column and layering on custom rendering, linking, sorting, and
queryset augmentation, along with registration.The
DashboardColumnsHookandDataGridColumnsHookpages have been
modernized to reflect how columns are created now, and to refer to the
new guide for details on column creation.
Built the docs. Checked for any obvious build or link errors.
| Summary | ID |
|---|---|
| 2b867485b219527bb390f5214ae0fe1958311882 |
| Description | From | Last Updated |
|---|---|---|
|
typo: in order they want -> in the order they want |
|
|
|
We need from django.utils.html import format_html in this too. |
|
|
|
This defaults to the same thing as label, so it's silly to show both being defined the same. We should … |
|
|
|
This is generic, so probably shouldn't be referring specifically to review requests. Maybe "The name of the attribute on the … |
|
|
|
Typo: extra ) at the end. |
|
|
|
Need to add from django.utils.translation import gettext_lazy as _ to these. |
|
|
|
This feels a little awkward. How about: Always use :py:func:~django.utils.html.format_html to build HTML with user-provided values, or :py:func:~django.utils.html.escape to convert … |
|
|
|
Typo: teh -> the |
|
|
|
escape should be imported from django.utils.html |
|
|
|
Need to add from django.utils.translation import gettext_lazy as _ to these. |
|
|
|
Seems like something got left off here. Could probably just do "To make the column's content a link:" |
|
|
|
Typo: define -> Define |
|
|
|
link_func is only used if self.link = True, so we need to add that attr to the class vars here. |
|
|
|
typos: ReviewRequestsDataGrid -> ReviewRequestDataGrid GroupsDataGrid -> GroupDataGrid |
|
|
|
ReviewRequestsDataGrid -> ReviewRequestDataGrid |
|
-
-
-
-
This defaults to the same thing as
label, so it's silly to show both being defined the same. We should probably either drop it from here or make it different. -
This is generic, so probably shouldn't be referring specifically to review requests. Maybe "The name of the attribute on the object being displayed in the row"?
-
-
-
This feels a little awkward. How about:
Always use :py:func:
~django.utils.html.format_htmlto build HTML with user-provided values, or :py:func:~django.utils.html.escapeto convert plain text to safe HTML. If the content already comes from a trusted source, you can wrap it with :py:func:~django.utils.safestring.mark_safe -
-
-
-
Seems like something got left off here. Could probably just do "To make the column's content a link:"
-
-
-
-