Django viewflow выполняет запросы в пользовательском узле
Я пытаюсь адаптировать пример Viewflow Dynamicsplit
Задача состоит в том, чтобы разделить утверждения заказа на основе OrderLines и назначить их соответствующему утвердителю. Кажется, что это должно быть возможно, так как есть возможность, описанная в этом ответе - Автоматическое назначение пользователя на задачи (Viewflow, Django)
Проблема в том, что всякий раз, когда я пытаюсь взять текущий ордер pk в DynamicSplitActivation
- queryset возвращается пустым. Не уверен, где я ошибаюсь. Кверисет работает нормально, если я устанавливаю pk вручную, но как только я пытаюсь использовать динамическую переменную, он перестает работать
Я перечислил поток, модели и т.д. в конце сообщения, однако, я предполагаю, что вопрос довольно простой. Любая помощь будет оценена по достоинству!
nodes.py
...
class DynamicSplitActivation(AbstractGateActivation):
def calculate_next(self):
self._order = self.flow_task._order_callback(self.process)
order_id = self._order.pk
# order_id = 28
order_lines = models.OrderLine.objects.filter(order_id=order_id)
project_lines = project_models.ProjectLine.objects.filter(orderline__in=order_lines)
users = User.objects.filter(projectline__in=project_lines).distinct()
self._approvers = users
...
class DynamicSplit(...):
...
def __init__(self, callback):
super(DynamicSplit, self).__init__()
self._order_callback = callback
self._ifnone_next_node = None
...
flows.py
...
approval_split = (
nodes.DynamicSplit(lambda act: act.order)
.IfNone(this.end)
.Next(this.split_approval_budget)
)
models.py
...
class ProjectLine(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE)
description = models.CharField(max_length=50)
budget_holder = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, blank=True)
class Order(models.Model):
description = models.CharField(max_length=30)
class OrderLine(models.Model):
order = models.ForeignKey(Order, on_delete=models.CASCADE)
project_line = models.ForeignKey(project_models.ProjectLine, on_delete=models.SET_NULL, null=True, blank=False)
product = models.ForeignKey(catalogue_models.Product, on_delete=models.CASCADE)
quantity = models.PositiveIntegerField()
budgetholder_approved = models.BooleanField(null=True)
class OrderProccess(Process):
order = models.ForeignKey(Order, blank=True, null=True, on_delete=models.CASCADE)
...