Simple orderable mixin to add drag-and-drop ordering support to the ModelAdmin
listing view.
It attempts to provide the feature request in Wagtail project without modifying the project code as it seems not a high priority item for the project.
Install the package
pip install wagtail-orderable
In your settings file, add wagtailorderable
to INSTALLED_APPS
:
INSTALLED_APPS = [
# ...
'wagtailorderable',
# ...
]
To apply the orderable feature, extend your model with Orderable
.
from django.db import models
from wagtailorderable.models import Orderable
class YourModel(Orderable):
title = models.CharField(max_length=200)
Of course you can apply it to Wagtail's Page
model.
from wagtail.core import fields
from wagtail.core.models import Page
from wagtailorderable.models import Orderable
class YourModel(Page, Orderable):
description = fields.RichTextField(blank=True)
Note that Orderable
also exists in wagtail.core.models
, DO NOT use that as the mixins require the model from the same package.
To apply the feature support in admin panel. In wagtail_hooks.py
:
from wagtail.contrib.modeladmin.options import (
ModelAdmin, modeladmin_register)
from wagtailorderable.modeladmin.mixins import OrderableMixin
from .models import YourModel
class YourModelAdmin(OrderableMixin, ModelAdmin):
model = YourModel
ordering = ['sort_order']
modeladmin_register(YourModelAdmin)
Finally, collect the corresponding static file by running
python manage.py collectstatic
in your project.
- Provide Github Actions script to build and publish package in PyPI
- Add support for Wagtail 3.0 and drop support for all Wagtail versions before 2.15 (#32)
- Use
pk
instead ofid
for duplicate positions (#31) 1.0.3
- Fix
TypeError
when creating the first Orderable object (#21)
- Fix
sort_order
duplication for items - Fix wrong
return
syntax
get_list_display
handles any iterable- Support for filters in ModelAdmin
- Style updated
Most of the contribution comes from this commit which attempts to integrate the solution in Wagtail project. Though it is not being used in Wagtail now it provides great skeleton for the feature which helps me created this mixin.
Thanks the contribution from Andy Babic.
Contirbution for this project are all welcome :)