Pythonメモ torinaブログ

このブログはDjangoとBootstrap4で作成されました
ソースコード

Django、ドラッグアンドドロップで表示順の変更(管理画面)

プログラミング関連 Django
約172日前 2016年10月9日0:27
https://github.com/iambrandontaylor/django-admin-sortable
django-admin-sortable を使い、管理画面でドラッグアンドドロップで表示順を変更できるようにします。

このように、いくつかのデータがあります。


右上にCHANGE ORDERというボタンが増え、そこからソート画面に遷移できます。


ドラッグアンドドロップでソートができます。




試しにListViewとtemplateを作って表示してみると、ちゃんと反映されています。



Django1.10です。


まずはインストール
pip install django-admin-sortable



settings.pyに、足します。
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app',  # 自分のアプリ
    'adminsortable',  # 足した
]



models.py
from django.db import models
from adminsortable.models import SortableMixin  # 足した


class Post(SortableMixin):  # models.Modelから変更
    """ブログのポスト"""

    title = models.CharField(max_length=255)
    text = models.TextField()

    # 足した
    the_order = models.PositiveIntegerField(
        default=0, editable=False, db_index=True)

    # 足した
    class Meta:
        ordering = ['the_order']

    def __str__(self):
        return self.title



admin.py
from django.contrib import admin
from adminsortable.admin import SortableAdmin  # 足した
from .models import Post

admin.site.register(Post, SortableAdmin)  # 足した



シンプルな方法だと、これで完了です。便利ですね。