Skip to main content

Componente reutilizable para generar datatables en Django con soporte para htmx y Bootstrap

Project description

django datatable builder

Reusable component to generate dynamic datatables in Django projects, with Bootstrap support and customizable row actions.

PyPI version License: MIT


🚀 Features

  • Automatically generate HTML tables from Django QuerySets
  • Supports pagination, ordering, and search
  • Bootstrap-compatible out of the box
  • Custom row-level actions (edit, delete, etc.)
  • Easy integration into existing Django apps

📦 Installation

pip install django-datatable-builder

🛠️ Basic Usage

1.Add to INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    'django_datatable_builder',
]

2.Create a table class in your view:

from django_datatable_builder import DataTable

def datatable_view(request):
    devices = [
        {"id": 1, "name": "Router", "status": "Active"},
        {"id": 2, "name": "Switch", "status": "Inactive"},
    ]

    datatable_config = {
        "data": devices,
        "columns": ["Name", "Status"],
        "hidden": ["id"],
        "order": [[0, "asc"]],
        "table_id": "devices_table",
        "column_search": True,
        "button_dropdown": True,
        "button_url": {
            "Show_demo_1": {"link": {"url": "demo:datatable_view",}},
            "Show_demo_2": {"modal": {"url": "demo:datatable_view","params":"dispositivo_id": "id"}}
        },
        "button_inline": {
            "Show_demo_3": {"link": {"url": "demo:datatable_view", "params": {"dispositivo_id": "id"}}, "class": "btn btn-success float-end"},
        },
    }

    return render(request, "demo.html", {"datatable": DataTable(request, datatable_config)})

3.Render the table in your template:

{{ datatable|safe }}

📚 Documentation

DataTable Parameters

These are the main configuration options used to initialize and render a dynamic datatable.

Parameter Description
data A Django QuerySet or a list of dictionaries. This is the source of the table content.
columns A list of column names. Order must match the order of fields in data.
hidden A list of field names to hide from the table. Useful for keeping some values available in HTML without displaying them.
order Default ordering of the table. Format: [[column_index, "asc" or "desc"]] — e.g., [[0, "asc"]].
table_id The HTML id attribute of the table. Required for JavaScript initialization.
column_search A list of field names that should support column-specific search.
button_dropdown Set to true or false depending on whether you want to show a dropdown with action buttons per row.
button_urls Used with button_dropdown. Defines one or more buttons with types like "link" or "modal". Supports optional class, and params. See example below.
button_inline Used for inline buttons (outside dropdowns). Structure is similar to button_urls. Useful if you want more flexibility with custom buttons.

button_urls (used with dropdown buttons)

button_urls = {
    "Edit": {
        "modal": {
            "url": "/edit/",
            "class": "btn btn-sm btn-primary",
            "params": {
                "id": "id"  # Uses the 'id' from each row in `data`
            }
        }
    },
    "View": {
        "link": {
            "url": "/view/",
            "class": "btn btn-sm btn-secondary"
        }
    }
}

button_inline (buttons directly rendered in table row)

button_inline = {
    "Delete": {
        "modal": {
            "url": "/delete/",
            "params": {
                "id": "id"
            }
        }
    }
}

🤝 Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request.

📄 License

This project is licensed under the MIT License. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_datatable_builder-0.1.1.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_datatable_builder-0.1.1-py3-none-any.whl (1.9 MB view details)

Uploaded Python 3

File details

Details for the file django_datatable_builder-0.1.1.tar.gz.

File metadata

  • Download URL: django_datatable_builder-0.1.1.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for django_datatable_builder-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d27d050a2ee1218728ef3fd335f832158367518e810b0f64650561fd4c0e439f
MD5 6cd143fd46b58164ef66c92cf42433f1
BLAKE2b-256 c7e94cd925a391397d90336f29e0ee8384727d0d95f0bef35383f3ce5f62b2a6

See more details on using hashes here.

File details

Details for the file django_datatable_builder-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for django_datatable_builder-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6324e717631cc60fed69b8effafde80017c43bfc735ab19a48318fe973072090
MD5 efb05cea9be0ca66f197d6f5ac22bb83
BLAKE2b-256 93370e9568c73da6524627f2db5e8355c37f32d46d7ec7c977c812b41cba3667

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page