Skip to main content

No project description provided

Project description

Django Admin Detail View

Django Admin's missing DetailView.

Allows easy creation of a DetailView via DSL for an object in Django Admin.

Companies' changelist added View

Company's DetailView

Contact's DetailView

Why this exists

Django Admin's is missing detail views (by design). It's strengths lie in administering specific objects via form modification.

But, a common need is to allow internal staff/admins to view specific objects and and their related objects. Historically the recommendation was to build a separate website/frontend for this.

Theory

With models Company, ContactInfo, SalesLeads, Orders, Internal staff want to quickly understand the status of a particular Company so a simple View displaying these 4 objects is very beneficial.

Then I can drill down into a Order and see all related Products, OrderStatusUpdates, SalesComments.

Via DSL, it is fast to stand up DetailViews for many objects.

Beliefs

Information dense, grid layout. Function over form.

Features

  • Add View button to changelist for Object.
  • detail_table_for() builds object's details table.
  • table_for() builds a list of
  • ctx["layout"] holds the grid structure.

Pre-reqs

  • Bootstrap as Webpack
  • webpack_loader

Install

  1. Direct add github to pyproject.toml, git@github.com:jenfi-eng/djadmin-detail-view.git.
  2. Add to INSTALLED_APPS
  3. Create a DetailView and add mixin AdminDetailMixin
  4. To the object's admin add AdminChangeListViewDetail and function get_default_detail_view
  5. Return the newly created DetailView in get_default_detail_view.

See example_project/companies/admin.py for reference.

Code Example

from django.contrib import admin
from djadmin_detail_view.views import AdminChangeListViewDetail, AdminDetailMixin

from my_app.companies.models import Company

@admin.register(Company)
class CompanyAdmin(AdminChangeListViewDetail, admin.ModelAdmin):
    def get_default_detail_view(self):
        return CompanyDetailView

class CompanyDetailView(AdminDetailMixin, DetailView):
    model = Company

    def get_context_data(self, request, *args, **kwargs):
        ctx = super().get_context_data(request, *args, **kwargs)

        company_details = details_table_for(
            panel_name="Company Details",
            obj=self.object,
            details=[
                detail("id"),
                detail("legal_name"),
                detail("tax_id"),
                detail("total_completed_order_amount", value=lambda x: x.total_order_value()),
            ]
        )

        orders_list = table_for(
            panel_name="Orders",
            obj_set=self.object.order_set.all(),
            cols=[
                col("id"),
                col("legal_name"),
                col("total_value"),
                col("created"),
            ]
        )

        ctx["layout"] = [
            {
                "row": [
                    {"col": company_details},
                    {"col": None},
                ],
            },
        ]

Current Open Source Status

This project is not ready for wider consumption. It is currently built for Jenfi and its internal needs. Thus, it has specific requirements such as django-hosts that may need to be abstracted away.

PRs are welcome to make it more generally accessible.

VSCode

Testing

Add config to allow specs to be run inside VSCode.

// .vscode/settings.json
{
  "python.testing.pytestArgs": [
    ""
  ],
  "python.testing.unittestEnabled": false,
  "python.testing.pytestEnabled": true,
}

Web Launch Config

{
    "name": "Django Web",
    "type": "python",
    "request": "launch",
    "program": "${workspaceFolder}/server.py",
    "args": [],
    "django": true,
    "justMyCode": false
},

TODO

  1. Add specs.
  2. Versioning and release on pypi.
  3. Allow non-webpack based installs.

Credit

This project takes a lot of inspiration from Rail's ActiveAdmin and its DSL.

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

djadmin_detail_view-0.2.2.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

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

djadmin_detail_view-0.2.2-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file djadmin_detail_view-0.2.2.tar.gz.

File metadata

  • Download URL: djadmin_detail_view-0.2.2.tar.gz
  • Upload date:
  • Size: 11.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.13.1 Darwin/24.3.0

File hashes

Hashes for djadmin_detail_view-0.2.2.tar.gz
Algorithm Hash digest
SHA256 2dbc590b7154fb1dbf791ae7320dc26442f5030d6a4c1f5e8d606026948a1ed7
MD5 36d5d667a9bf835fefae9928f1bc324c
BLAKE2b-256 dbf9e02448dd532ce5e10017cbbf59ec4769d3fffdf9977faf6b67d76d03ddbb

See more details on using hashes here.

File details

Details for the file djadmin_detail_view-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for djadmin_detail_view-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4ba11e714849dc76367a4eec9edbfd882880a5cde59a398af1b47718fa5748cd
MD5 86f88d0b085594a7d51f6512bf6900c7
BLAKE2b-256 10a7b7100186e523d6efd6d033cd3734f3b78d666f63edc9c9dc72946b5aed9d

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