jira python-如何更新fixVersions字段?

jira python-如何更新fixVersions字段?,jira,jira-rest-api,python-jira,Jira,Jira Rest Api,Python Jira,我不确定我做错了什么,我希望其他人也有同样的问题。我没有得到任何错误,我的json与Jira的文档和Jira python在线问题上应该正确的内容相匹配。我的版本是有效的Jira版本。我也可以直接通过API来实现这一点,但我们正在重新编写所有内容,以通过jira python实现清洁度/易用性 这将完全清除Jira中的fixVersions字段 issue=jira.issue("TKT-100") issue.update(fields={'fixVersions':[{'add': {'na

我不确定我做错了什么,我希望其他人也有同样的问题。我没有得到任何错误,我的json与Jira的文档和Jira python在线问题上应该正确的内容相匹配。我的版本是有效的Jira版本。我也可以直接通过API来实现这一点,但我们正在重新编写所有内容,以通过jira python实现清洁度/易用性

这将完全清除Jira中的fixVersions字段

issue=jira.issue("TKT-100")
issue.update(fields={'fixVersions':[{'add': {'name': 'add_me'}},{'remove': {'name': 'remove_me'}}]})
我可以使用issue.add_field_value()向fixVersions添加新版本,但这不起作用,因为我需要在一个请求中添加和删除票据的历史记录

issue.add_field_value('fixVersions', {'name': 'add_me'})

有什么想法吗?

这里有一个代码示例,说明我是如何让它为后来遇到这个问题的人工作的

    fixVersions = []
    issue = jira.issue('issue_key')
    for version in issue.fields.fixVersions:
        if version.name != 'version_to_remove':
            fixVersions.append({'name': version.name})
    fixVersions.append({'name': 'version_to_add'})
    issue.update(fields={'fixVersions': fixVersions})
我用另一种方式:

  • 在目标项目中创建版本
  • 更新票证

    ver=jira.创建版本(name='version'u name',project='project\u name')
    issue=jira.issue('issue_NUM')
    i、 更新(字段={'fixVersions':[{'name':ver.name}]})


  • 在我的例子中,这是有效的。

    用户797963解决方案的pythonic版本可能看起来是这样的

    def change_fix_version(tickets, remove_versions=[], add_versions=[]):
        fix_versions={version.name for version in ticket.fields.fixVersions}
        fix_versions.difference_update(set(remove_versions))
        fix_versions.update(set(add_versions))
        ticket.update(fields={'fixVersions':fix_versions})
    
    你会这样称呼它:

     change_fix_versions(jira.issue('my_issue'), remove_versions=['draft'], add_versions=['master', 'release'])
    

    事实上,我发现可以这样做:首先在一个票证中找到所有的fixVersions,将除了要删除的fixVersions之外的所有fixVersions都放到一个列表中,附加新的fixVersion,并使用“set”动词,而不是“add”和“remove”。Jira不会覆盖其他fixVersion值。实际上,我从这个方法开始,注意到它正在清除现有版本。只有最后一个版本卡住了。但是使用add_field_value()实现了这一点。您忘记了fix_版本应该是一个dict列表<代码>修复版本=[version.raw代表票证中的版本。fields.fixVersions]。然后你应该假设你的用法是这样的
    change\u-fix\u-versions(jira.issue('my\u-issue'),remove\u-versions=[{'name':'draft'}],add\u-versions=[{'name':'master'},{'name':'release'}])