0

总的来说,我是超级新手。我目前正在构建一个网络应用程序,它从 Rally/CA Agile Central 获取数据并将它们放在一个整洁的表格中。我的代码:

response = rally.get('UserStory', fetch = True, query=query_criteria)
response_defect = rally.get('Defect', fetch = True, query=query_criteria)

story_list = []
if not response.errors:
    for story in response:
        #print (story.details())
        a_story={}
        #a_story['State'] = story.State.Name #if story.State else "Backlog"
        a_story['State']=story.BusOpsKanban if story.BusOpsKanban else "unassigned"
        #a_story['Status']=Story.Status if story.Status else "unassigned"
        a_story['id'] = story.FormattedID
        a_story['name'] = story.Name
        a_story['Opened']=(datetime.strptime(story.CreationDate, '%Y-%m-%dT%H:%M:%S.%fZ').strftime('%Y-%d-%b'))
        a_story['Requester']= story.Owner.Name if story.Owner else "unassigned"
        a_story['Blocked']= story.Blocked
        a_story['Service']=story.c_ServiceNowID

我的问题是访问我的自定义字段 (c_ServiceNowID) 的链接 ID 的值。当我运行Dict = 我看到我有 LinkID 属性但是当我输入

story.c_ServiceNowID.LinkID,我收到一条错误消息,告诉我没有这样的属性......如何使用 python 访问这个值?谢谢

4

2 回答 2

0

根据http://pyral.readthedocs.io/en/latest/overview.html#custom-fields的文档,pyral 允许您引用不带 c_ 前缀的字段

Rally 中的大多数工件类型都可以通过自定义字段进行扩充。从 Rally WSAPI v2.0 开始,自定义字段的 ElementName 以“c_”为前缀。pyral 工具包允许您引用这些字段,而无需使用“c_”前缀。例如,如果您的自定义字段的 DisplayName 为“Burnt Offerings Index”,您可以在 fetch 子句或查询子句中使用“BurntOfferingsIndex”字符串,或者直接在工件上将该字段称为 artifact.BurntOfferingsIndex。

于 2018-03-29T04:41:48.967 回答
0

我认为你所拥有的应该可以工作,除非 ServiceNowID 为空。在这种情况下,ServiceNowID 对象上将没有可用的 LinkID 或 DisplayString。

如果您更新代码以检查以确保 Attribute 存在,它是否有效?

if hasattr(story.c_ServiceNowID, 'LinkID'):
  a_story['Service']=story.c_ServiceNowID.DisplayString
  a_story['Link']=story.c_ServiceNowID.LinkID
于 2018-03-29T11:16:12.743 回答