Обновление Contentful Entry List - PullRequest
       40

Обновление Contentful Entry List

0 голосов
/ 30 сентября 2019

Попытка обновить список записей. Я могу обновить поле 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 голосов
/ 30 сентября 2019

Вы должны иметь возможность использовать 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)
...