0

我有一个事件表和一个标签表:

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)

上面的代码正在更新,但只存储表中的最后一个值。我需要用新的值更新值。

该列表可以包含任意数量的值。我需要用数据库中的现有列表替换新列表。

只是我只想用旧标签更新新标签。怎么做?

4

1 回答 1

1

问题在于以下几行:

for i in range(len(tags)):
    tagsobj = tagobj.update(name = tags[i], event_id = key)

您正在对 QuerySet 调用 update tagobj,这将更新 QuerySet 中的所有标签。因此,您所有的标签都将具有最后一个标签的值。

如果我正确理解您的问题,如果您更新每个单独的标签,它应该可以工作。

i = 0
for tag_item in tagobj:
    tag_item.update(name=tags[i], event_id=key)
    i +=1
于 2013-11-07T09:39:27.457 回答