Как сохранить очередь экземпляров моделей в 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?
Большое спасибо