Я создал представление администратора, используя класс TabularInline. При таком представлении невозможно позволить пользователю упорядочивать / сортировать таблицу по своему вкусу, как в стандартном представлении ModelAdmin. Я хотел бы добиться этого. Я использую Django 2.2.1.
Что я пробовал
- Я искал документы Django, но, кроме жесткого упорядочивания "порядка" в файле admin.py, я не смог найти ничего по этой теме. Это не то, что я хочу, я хочу, чтобы администратор выбирал, как сделать заказ.
- Я пытался использовать adminsortable2 , однако столкнулся с некоторыми проблемами, которые не смог решить. Это заставило меня задуматься: неужели это невозможно с помощью стандартного пакета Django?
Мой код
Моя модель состоит из таймфреймов, которые состоят из таймслотов.
Вот как выглядит мой model.py:
from django.db import models
class TimeFrame(models.Model):
name = models.CharField(max_length=30)
def __str__(self):
return self.name
class TimeSlot(models.Model):
DAY_CHOICES = ('work', 'Work'), ('weekend', 'Weekend')
begin_time = models.TimeField()
end_time = models.TimeField()
reference = models.CharField(max_length=30)
day = models.CharField(max_length=30, choices=DAY_CHOICES)
timeframe = models.ForeignKey('TimeFrame', on_delete=models.CASCADE)
Я не хочу регистрировать отдельное представление администратора временного интервала, поскольку временные интервалы всегда являются частью таймфрейма. Они не существуют сами по себе.
from django.contrib import admin
from .models import *
class TimeSlotInline(admin.TabularInline):
model = TimeSlot
ordering = ("day", "begin_time") #hard-coded ordering
@admin.register(TimeFrame)
class TimeFrameAdmin(admin.ModelAdmin):
inlines = [TimeSlotInline]
Ожидаемый результат
Включите пользователя-администратора для сортировки, как в стандартном представлении ModelAdmin.