关于Python Redmine中setattr()用法的查询

关于Python Redmine中setattr()用法的查询,python,redmine,python-redmine,Python,Redmine,Python Redmine,Redmine issues中某个项目的setattr()失败,出现以下错误 Traceback (most recent call last): File "E:\test\get_redmine_data.py", line 47, in <module> print (item.assigned_to) File "C:\Python27\lib\site-packages\redminelib\resources\standard.py", line 150,

Redmine issues中某个项目的
setattr()
失败,出现以下错误

Traceback (most recent call last):
  File "E:\test\get_redmine_data.py", line 47, in <module>
    print (item.assigned_to)
  File "C:\Python27\lib\site-packages\redminelib\resources\standard.py", line 150, in __getattr__
    return super(Issue, self).__getattr__(attr)
  File "C:\Python27\lib\site-packages\redminelib\resources\base.py", line 164, in __getattr__
    attr, encoded = self.encode(attr, decoded, self.manager)
  File "C:\Python27\lib\site-packages\redminelib\resources\base.py", line 266, in encode
    return attr, manager.new_manager(cls._resource_map[attr]).to_resource(value)
  File "C:\Python27\lib\site-packages\redminelib\managers\base.py", line 29, in to_resource
    return self.resource_class(self, resource)
  File "C:\Python27\lib\site-packages\redminelib\resources\base.py", line 130, in __init__
    self._decoded_attrs = dict(dict.fromkeys(relations_includes), **attributes)
TypeError: type object argument after ** must be a mapping, not str
我还尝试使用update()方法

这也会失败,并出现另一个错误-
redminelib.exceptions.ResourceNotFoundError:请求的资源不存在

我验证了问题id存在于Redmine中。

您在这里遇到了几个问题:

  • 属性名称是
    分配给\u id
    的,而不是
    分配给
  • 它接受的用户id是
    int
    ,而不是
    str
  • 这里不需要使用
    setattr()
    ,只需使用
    item.assigned\u to\u id=123
  • 设置
    assigned\u to\u id
    后,需要调用
    item.save()
    ,否则将不会保存到Redmine
  • 当您尝试使用
    update()
    方法时,您是在
    项目
    资源上使用in,而不是在
    问题
    资源上使用in,这就是为什么您会得到
    资源NotFoundError

  • 所有这些信息都可以在文档中找到:

    您在这里遇到了几个问题:

  • 属性名称是
    分配给\u id
    的,而不是
    分配给
  • 它接受的用户id是
    int
    ,而不是
    str
  • 这里不需要使用
    setattr()
    ,只需使用
    item.assigned\u to\u id=123
  • 设置
    assigned\u to\u id
    后,需要调用
    item.save()
    ,否则将不会保存到Redmine
  • 当您尝试使用
    update()
    方法时,您是在
    项目
    资源上使用in,而不是在
    问题
    资源上使用in,这就是为什么您会得到
    资源NotFoundError

  • 所有这些信息都可以在文档中找到:

    请给出一个答案-哪一行失败,有什么回溯?你好,jonrsharpe,我更新了这个问题以使问题更清晰。我将无法共享Redmine URL和类似的东西。同样在你开始做一些事情之前,先检查一下是否有一个插件。。。请给出一个-哪一行失败了,有什么回溯?你好,jonrsharpe,我更新了问题以便更清楚。我将无法共享Redmine URL和类似的东西。同样在你开始做一些事情之前,先检查一下是否有一个插件。。。谢谢马克斯·特普基夫。是的,我应该更加注意文档。谢谢Max Tepkeev。是的,我应该更注意文档。
    redmine = Redmine('http://redmine_url', username='uname', password='pwd')
    project = redmine.project.get('proj_name')
    work_items = project.issues
    for item in work_items:
       assignee_not_set = getattr(item,'assigned_to',True)
       if assignee_not_set == True:
           print item.id
           setattr(item,'assigned_to','Deepak')
           print (item.assigned_to)
    
    redmine.project.update(item.id, assigned_to='Deepak')