Обновления не влияют на django orm. Что-то не так в моем коде? - PullRequest
0 голосов
/ 29 мая 2019

Мне нужно обновить несколько строк в url_field в одной из моих моделей, каждая product_id имеет свои собственные новые соответствующие значения для загрузки.Что не так с моим кодом?Ошибки не возвращаются.

idlist= ["",""]
url = ["https://www.sample.com","https://www.sample2.com"]
i = 0


while i < len(item_idlist):
Model.objects.filter(item_id=idlist[i].update(product_url=url[i]))
i += 1

Я ожидаю, что каждые итерации будут обновлять мои данные внутри модели.

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Вы можете использовать цикл for в сочетании с zip:

for id, url in zip(idlist, urls):
     m = Model.objects.filter(item_id=id)
     m.update(product_url = url)
0 голосов
/ 29 мая 2019

Осторожнее с вашими скобками. Ваш update() должен быть после вашего filter(). Не внутри. Вы уверены в своем списке? Потому что вы фильтруете с пустой строкой. Таким образом, вы filter() ничего не вернете и ничего не обновите.

Вы можете обновить свою структуру данных следующим образом. Свяжите идентификатор с новым URL в словарь.

idlist_url = {
 1: "https://www.sample.com",
 2: "https://www.sample2.com"
}

for id, new_url in idlist.items():
    Model.objects.filter(item_id=id).update(product_url=new_url)
...