from django.db.models import Case, When, Value, IntegerField
from .models import YourModel
# ソート順を定義
sort_order = Case(
When(status='public', then=Value(1)),
When(status='private', then=Value(2)),
When(status='delete', then=Value(3)),
default=Value(4),
output_field=IntegerField()
)
# クエリセットを注釈付けしてソート
queryset = YourModel.objects.annotate(sort_order=sort_order).order_by('sort_order')
Djangoで特定のアイテムを優先してソートする