如何用表中的新标签值替换?

时间:2013-11-07 07:58:51

标签: django python-2.7

我有一个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更新新标签。怎么做?

1 个答案:

答案 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