Как сохранить очередь экземпляров моделей в django для использования в различных представлениях (пожалуйста, прочитайте описание)

Я пытаюсь реализовать алгоритм как разновидность алгоритмов сортировки на основе приоритетов, используемых в операционных системах. Предположим, у меня есть модель Задача:

class Task(models.Model):
    priority = 1
    name = "task"
    burst_time = 5
    arrival_time = models.DateTimeField(auto_now_add=True)

Что-то вроде этого. И один из моих представлений делает что-то с задачей:

def my_view(request, pr):
    instances_queue = Task.objects.filter(priority=pk).order_by(-arrival_time)
    instance = instance_queue[1]
    #do something with the instance
    instance.burst_time = instance.burst_time - 1
    instance.save()
    #if burst_time == 0 dequeue

Но просто использовать objects.filter() не очень хорошо, поэтому то, что мне в идеале нужно, это создать класс, как у меня здесь:

class Queue():

    def __init__(self, quantum, priority):
        self.items = []
        self.quantum = quantum
        self.priority = priority

    def isEmpty(self):
        return self.items == []

    def enqueue(self, item):
        item.Qtime = self.quantum
        item.priority = self.priority
        self.items.insert(0,item)

    def dequeue(self):
        return self.items.pop()

    def size(self):
        return len(self.items)

    def peek(self):
        return self.items[-1]

как модель, где элементы являются экземплярами моей модели Task. Я должен иметь возможность создавать несколько очередей и чередовать задачи в зависимости от потребностей. То, как я это реализую, становится слишком сложным. Может ли кто-нибудь помочь с дизайном модели Queue, чтобы я мог использовать ее как универсальную очередь для моих объектов Task?

Большое спасибо

Вернуться на верх