我有一个Event表和一个Tags表:
tags = Tags.objects.filter(event_id=id).values_list('name')
给出了现有值列表
oldlist = {"tags":"['tag1', 'tag4', 'tag3']"}
我有新列表
newlist = {"tags":"['tag1', 'tag2', 'tag3']"}
我有桌子:
Table: Event
id, title, content
Table: Tags
id event_id, name
当用户正在更新活动时,他也可以更新标签,如何存储这些新标签并将其替换为前一次?
tagobj = Tags.objects.filter(event_id = id)
if len(tags) > 0:
for i in range(len(tags)):
tagsobj = tagobj.update(name = tags[i], event_id = key)
上面的代码正在更新,但只存储表中的最后一个值。我需要用新的值更新值。
列表可以包含任意数量的值。我需要将新列表替换为数据库中的现有列表。
我只是想用oldones更新新标签。怎么做?
答案 0 :(得分:1)
问题在于以下几行:
for i in range(len(tags)):
tagsobj = tagobj.update(name = tags[i], event_id = key)
您正在QuerySet tagobj
上调用update,它将更新QuerySet中的所有标记。因此,所有标记都将包含最后一个标记的值。
如果我正确理解了您的问题,那么在更新每个标记时它应该有效。
i = 0
for tag_item in tagobj:
tag_item.update(name=tags[i], event_id=key)
i +=1