Metadata-Version: 2.4
Name: django-admin-app-model-sort
Version: 0.1.0
Summary: Control the sort order of apps and models in the Django admin interface.
Author-email: Omid Shojaee <omid.shojaee@gmail.com>
License-Expression: BSD-3-Clause
Project-URL: Homepage, https://github.com/omidshojaee/django-admin-app-model-sort
Project-URL: Repository, https://github.com/omidshojaee/django-admin-app-model-sort
Project-URL: Issues, https://github.com/omidshojaee/django-admin-app-model-sort/issues
Project-URL: Changelog, https://github.com/omidshojaee/django-admin-app-model-sort/blob/main/CHANGELOG.md
Keywords: django,admin,sort,order
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 4.2
Classifier: Framework :: Django :: 5.2
Classifier: Framework :: Django :: 6.0
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Django>=4.2
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-django; extra == "dev"
Dynamic: license-file

# django-admin-app-model-sort

Control the sort order of apps and models in the Django admin index page.

This is an independent, unofficial third-party package. It is not affiliated
with or endorsed by the Django Software Foundation.

## Install

```bash
pip install django-admin-app-model-sort
```

Add to `INSTALLED_APPS` before `django.contrib.admin`:

```python
INSTALLED_APPS = [
    "django_admin_app_model_sort",
    "django.contrib.admin",
    ...
]
```

## Usage

### Sort apps in the admin index

```python
# myapp/apps.py
from django.apps import AppConfig

class MyAppConfig(AppConfig):
    name = "myapp"
    app_sort = 10  # lower appears first; omit to sort alphabetically after explicit ones
```

### Sort models within an app

```python
# myapp/admin.py
from django.contrib import admin
from .models import Invoice

@admin.register(Invoice)
class InvoiceAdmin(admin.ModelAdmin):
    model_sort = 1  # lower appears first within the app section
```

Apps and models without an explicit sort value fall back to alphabetical
ordering and appear after all explicitly sorted ones.

## How it works

Patches `AdminSite.get_app_list()` once at app startup (`AppConfig.ready()`).
No Django source modifications. Zero rebase maintenance.

## Running tests

```bash
pip install -e ".[dev]"
pytest
```

## License

BSD-3-Clause.

## Contribution

Issues and pull requests are welcome.
