更新内容丰富的条目列表

时间:2019-09-30 18:04:31

标签: python contentful contentful-management

尝试更新条目列表。 我能够更新entry.name字段。但是,不完全确定如何处理列表部分。

当前,我可以获得当前的项目列表,但是当我添加一个新项目并设置entry.list = new_list时,什么也没发生。

    prev_products = entry.products
    print(prev_products)

    new_products = prev_products.append(
                                {
                                    "sys": {
                                        "type": "Link",
                                        "linkType": "Entry",
                                        "id": '1HYANUnDBW7tyMA6jMlknH'
                                        }
                                }
                            )

    print(new_products)

new_products原来是None。

1 个答案:

答案 0 :(得分:0)

您应该能够使用prev_products.append()而不必引用另一个对象-list.append()dict["newKey"] = "newValue"修改该对象。像这样:

prev_products.append(
                                {
                                    "sys": {
                                        "type": "Link",
                                        "linkType": "Entry",
                                        "id": '1HYANUnDBW7tyMA6jMlknH'
                                        }
                                }
                            )

您要存储列表还是字典?由于您没有收到错误,因此我假设prev_products返回一个列表。如果您只对新产品感兴趣,可以通过将print(new_products)替换为print(prev_products[-1])来找到。如果您完全对新列表感兴趣,那么只需在附加新元素后print(prev_products)

存储在列表中的上述键/值对在技术上是有效的,但我个人不想显式地构建这样的字符串列表。假设entry.products与您要追加的结构相同:

    prev_products = entry.products
    print(prev_products)

    product_dict=json.loads(prev_products)  # this puts the list of strings in to key:value form

    product_dict["newKey"] = dict() # this adds the new key to 
                                    # your dictionary at the root level so you can add more elements

    product_dict["newKey"]["sys"] = dict()
    product_dict["newKey"]["sys"]["type"]="Link" 
    product_dict["newKey"]["sys"]["linkType"]="Entry"
    product_dict["newKey"]["sys"]["id"]='1HYANUnDBW7tyMA6jMlknH'
    print(new_products)