Skip to main content

A Django utility for automatically handling unspecified fields in admin fieldsets

Project description

Django Auto Admin Fieldsets

A Django utility for automatically handling unspecified fields in ModelAdmin fieldsets.

Installation

pip install django-auto-admin-fieldsets

Features

  • Automatically add unspecified model fields to a designated placeholder in Django admin fieldsets
  • Works with all field types, including many-to-many fields
  • Respects exclude and readonly_fields settings
  • Supports custom placeholders
  • Provides both a mixin and a standalone function for maximum flexibility

Usage

Using the Mixin

from django.contrib import admin
from django_auto_admin_fieldsets.admin import AutoFieldsetsMixin
from . import models

@admin.register(models.MyModel)
class MyModelAdmin(AutoFieldsetsMixin, admin.ModelAdmin):
    # Define fieldsets as usual with a placeholder
    fieldsets = [
        ("Basic Information", {"fields": ["title", "slug"]}),
        ("Content", {"fields": ["__remaining__"]}),  # All other fields will appear here
    ]

    # Optional: customize the placeholder (default is "__remaining__")
    remaining_fields_placeholder = "__remaining__"

Using the Convenience ModelAdmin

from django.contrib import admin
from django_auto_admin_fieldsets.admin import AutoFieldsetsModelAdmin
from . import models

@admin.register(models.MyModel)
class MyModelAdmin(AutoFieldsetsModelAdmin):
    # Define fieldsets as usual with a placeholder
    fieldsets = [
        ("Basic Information", {"fields": ["title", "slug"]}),
        ("Content", {"fields": ["__remaining__"]}),  # All other fields will appear here
    ]

Using the Standalone Function

from django.contrib import admin
from django_auto_admin_fieldsets.admin import auto_add_fields_to_fieldsets
from . import models

@admin.register(models.MyModel)
class MyModelAdmin(admin.ModelAdmin):
    fieldsets = [
        ("Basic Information", {"fields": ["title", "slug"]}),
        ("Content", {"fields": ["__remaining__"]}),
    ]

    def get_fieldsets(self, request, obj=None):
        fieldsets = super().get_fieldsets(request, obj)
        return auto_add_fields_to_fieldsets(
            model=self.model,
            fieldsets=fieldsets,
            exclude=self.exclude or [],
            placeholder="__remaining__",
        )

admin.site.register(MyModel, MyModelAdmin)

Removing fields from fieldsets

from django_auto_admin_fieldsets.admin import remove_fields_from_fieldsets

fieldsets = [
    ("Basic Information", {"fields": ["title", "slug", "hide_title"]}),
    ("Content", {"fields": ["description", "noindex"]}),
]

fieldsets = remove_fields_from_fieldsets(fieldsets, "hide_title")
fieldsets = remove_fields_from_fieldsets(fieldsets, ["noindex"])

Configuration Options

  • remaining_fields_placeholder: The placeholder string to look for in your fieldsets (default: "__remaining__")

The function also respects the standard Django admin configuration options. If you do not want a field to appear in the resulting fieldsets, add it to the standard exclude list.

Development

Running Tests

Tests should be run using tox, which tests against multiple Python and Django versions:

tox

This will run the test suite against all supported Python and Django combinations as defined in tox.ini.

Code Quality

This project uses pre-commit for code quality checks. After cloning the repository, install the pre-commit hooks:

pre-commit install

The pre-commit configuration includes ruff for linting and formatting. Configuration can be found in pyproject.toml.

Compatibility

  • Python: 3.10 and above
  • Django: 4.2, 5.1, and 5.2 (also tested with Django main)

License

MIT

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_auto_admin_fieldsets-0.3.0.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

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

django_auto_admin_fieldsets-0.3.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file django_auto_admin_fieldsets-0.3.0.tar.gz.

File metadata

File hashes

Hashes for django_auto_admin_fieldsets-0.3.0.tar.gz
Algorithm Hash digest
SHA256 db916626edd233de1eeda876d6aab6f93eac6d0a1c34f87491d3d03543802ca2
MD5 b7992ebb4c64d4341f873fabd100ac70
BLAKE2b-256 e2b8ccff57e030e2b6684b37b51d52401a330008115c7dd8d17fb3303f851807

See more details on using hashes here.

File details

Details for the file django_auto_admin_fieldsets-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_auto_admin_fieldsets-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8e24f4757d6bd056c2392b044ab0cdb21d813f69e33caa981dda26ffe703db91
MD5 4d94ad48b60e75a186396486f6df5784
BLAKE2b-256 9d1bf6bb7972b7580495d3f01e9a45ee021683eea22a787c33873a056462f9ef

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