Как сделать TabularInline заказываемым пользователем? - PullRequest
0 голосов
/ 28 мая 2019

Я создал представление администратора, используя класс 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...