如何通过atlassian-python-api将Jira任务设为已完成?报错求助
解决Jira状态变更报错:The status change identifier must be an integer
错误原因
你代码里的问题有两个:
jira.get_issue_status(issue_key)返回的是当前问题的状态对象(包含状态名称、ID等信息的字典),但issue_transition需要的是**状态过渡(transition)**的ID(整数)或名称(字符串),不是当前状态的信息,类型不匹配导致报错。issue_transition的参数名应该是transition,不是status,参数传参错误。
解决步骤
1. 先获取问题可用的状态过渡
用get_transitions方法获取该问题能执行的所有状态过渡,每个过渡包含id(整数)和name(过渡名称,比如“完成”):
transitions = jira.get_transitions(issue_key)
打印transitions会得到类似结构:
[ {'id': '10000', 'name': '开始处理'}, {'id': '10001', 'name': '完成'} ]
2. 筛选目标过渡并执行变更
从过渡列表里找到对应“完成”的项,用它的ID来执行状态变更:
from atlassian import Jira jira = Jira(url='example.jira.com', username=username, password=password) # 获取可用过渡 transitions = jira.get_transitions(issue_key) # 筛选名称为“完成”的过渡(如果你的环境中过渡名称是英文,改成'Complete') target_transition = next(t for t in transitions if t['name'] == '完成') # 执行状态变更 jira.issue_transition(issue_key, transition=target_transition['id'])
简化写法(已知过渡ID时)
如果你已经知道“完成”对应的过渡ID(比如10001),可以直接传整数ID:
jira.issue_transition(issue_key, transition=10001)
内容的提问来源于stack exchange,提问作者roman
相关产品推荐
相关产品推荐

