查询螺纹相关对象
我有两个型号:WorkFlowStep和WorkFlowSteppr。 (PR代表先决条件)。
class WorkflowStep(BaseModel):
name = models.CharField(max_length=200)
workflow = models.ForeignKey('Workflow', on_delete=models.CASCADE)
allowed_status = models.ManyToManyField('WorkflowStepStatus', related_name='workflow_step')
default_status = models.ForeignKey('WorkflowStepStatus', blank=True, null=True, on_delete=models.SET_NULL)
recheck_on_new_version = models.BooleanField(default=False)
watch_folder = models.BooleanField(default=False)
def __str__(self):
return self.name
class Meta:
ordering = ['created_on']
class WorkflowStepPR(BaseModel):
PR_for = models.ForeignKey('WorkflowStep', related_name='PR_for', on_delete=models.CASCADE)
PR_step = models.ForeignKey('WorkflowStep', related_name='as_PR_step', on_delete=models.CASCADE)
PR_step_status = models.ForeignKey('WorkflowStepStatus', on_delete=models.CASCADE)
def __str__(self):
return "{} 's PR - {}".format(self.PR_for, self.PR_for.workflow)
class Meta:
ordering = ['created_on']
每个WorkFlowStep都有一个通过WorkFlowSteppr模型维护的先决条件。现在假设我有以下方案:
每个盒子代表一个工作流程。每个连接两个盒子的箭头都显示预选的关系(即箭头右侧的框取决于箭头左侧的框)。例如:“ B”是“ C”和“ D”的预先要求。
我想找到与步骤B直接或间接相关的所有步骤。
直接相关:c,d
间接相关:e(与c),g(与c),h(与d)有关对于h)
如何编写查询以获取此问题?
我尝试了以下内容
@receiver(pre_save, sender=WorkflowInstanceStep)
def status_of_workflowInstanceStep_updated(sender, instance,**kwargs):
if instance.id is None:
pass
else:
workflow_step = instance.workflow_step
dependent_steps = workflow_step.as_PR_step.all()
print(dependent_steps)
,但这只是返回QuerySet中的步骤C和步骤D。
I have two models : WorkflowStep and WorkflowStepPR. (PR stands for prerequisite).
class WorkflowStep(BaseModel):
name = models.CharField(max_length=200)
workflow = models.ForeignKey('Workflow', on_delete=models.CASCADE)
allowed_status = models.ManyToManyField('WorkflowStepStatus', related_name='workflow_step')
default_status = models.ForeignKey('WorkflowStepStatus', blank=True, null=True, on_delete=models.SET_NULL)
recheck_on_new_version = models.BooleanField(default=False)
watch_folder = models.BooleanField(default=False)
def __str__(self):
return self.name
class Meta:
ordering = ['created_on']
class WorkflowStepPR(BaseModel):
PR_for = models.ForeignKey('WorkflowStep', related_name='PR_for', on_delete=models.CASCADE)
PR_step = models.ForeignKey('WorkflowStep', related_name='as_PR_step', on_delete=models.CASCADE)
PR_step_status = models.ForeignKey('WorkflowStepStatus', on_delete=models.CASCADE)
def __str__(self):
return "{} 's PR - {}".format(self.PR_for, self.PR_for.workflow)
class Meta:
ordering = ['created_on']
Every WorkflowStep has a prerequisite which is maintained via WorkflowStepPR model. Now assume that I have the below scenario:
Every box represents a workflow step. Every arrow connecting two boxes shows pre requisite relation (i.e. box on the right of the arrow is dependent on the box on the left of the arrow). For example : "B" is the pre requisite for "C" and "D".
I want to find all the steps which are directly or indirectly related to Step B.
Directly related : C, D
Indirectly Related: E (related to C), G (related to C), H(related to D), J (related to H)
How can I write a query the to get this?
I have tried the following
@receiver(pre_save, sender=WorkflowInstanceStep)
def status_of_workflowInstanceStep_updated(sender, instance,**kwargs):
if instance.id is None:
pass
else:
workflow_step = instance.workflow_step
dependent_steps = workflow_step.as_PR_step.all()
print(dependent_steps)
But this returns just the step C and Step D in the queryset.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论