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":"devices_id": "id"}}
        },
        "button_inline": {
            "Show_demo_3": {"link": {"url": "demo:datatable_view", "params": {"devices_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/",
            "params": {
                "id": "id"  # Uses the 'id' from each row in `data`
            }
            "class": "btn btn-sm btn-primary",
        }
    },
    "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.2.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.2-py3-none-any.whl (1.9 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: django_datatable_builder-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 5e19b2907a47c9861c44406350d52c7174dff59d76a692627d9566c441e506dd
MD5 42aeb4d648588afbbec05e8974a735e3
BLAKE2b-256 90192b3f9e5293cc7d76203537368047034e8728fa50a85b25db1458adbf6a5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_datatable_builder-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4f2af0b74e00b7255ecb60cd8d18e82ee4bc3fe8efad0b0182622b551bdb85ba
MD5 0e1d4005d6ec6eef1e7900f7824b5a9f
BLAKE2b-256 9dbd228416a33489fcc4e520672493a9b1f787546a2e5fe0e62bc45167f1c31a

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