diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 8b95bfc954..0f6e7410f6 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -608,7 +608,11 @@ class UnifiedJobSerializer(BaseSerializer): summary_fields = super(UnifiedJobSerializer, self).get_summary_fields(obj) if obj.spawned_by_workflow: summary_fields['source_workflow_job'] = {} - summary_obj = obj.unified_job_node.workflow_job + try: + summary_obj = obj.unified_job_node.workflow_job + except UnifiedJob.unified_job_node.RelatedObjectDoesNotExist: + return summary_fields + for field in SUMMARIZABLE_FK_FIELDS['job']: val = getattr(summary_obj, field, None) if val is not None: diff --git a/awx/main/models/unified_jobs.py b/awx/main/models/unified_jobs.py index 63c3e3196a..31afe69d32 100644 --- a/awx/main/models/unified_jobs.py +++ b/awx/main/models/unified_jobs.py @@ -780,13 +780,19 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique @property def workflow_job_id(self): if self.spawned_by_workflow: - return self.unified_job_node.workflow_job.pk + try: + return self.unified_job_node.workflow_job.pk + except UnifiedJob.unified_job_node.RelatedObjectDoesNotExist: + pass return None @property def workflow_node_id(self): if self.spawned_by_workflow: - return self.unified_job_node.pk + try: + return self.unified_job_node.pk + except UnifiedJob.unified_job_node.RelatedObjectDoesNotExist: + pass return None @property