0

我正在尝试使用 m2m 字段。

我想要做的是有一个字符串(CharField),用户可以在其中编写帖子的标签,每个标签用逗号分隔。

我能够以这种方式进行创作:

  tags = tags.split(',')
        for tag in tags:
            obj, create = Tag.objects.get_or_create(name=tag)
            pub.tags.add(obj)

现在,我想做UpdateView。显然,如果我没有在表单中指定从列表到字符串的转换,我就没有设置任何值。所以它应该是这样的:

for tag in tags:
    str+=tag+","

重点是:

  • 我是否必须每次都将列表转换为字符串并将字符串转换为列表?
  • 我可以在某处指定如何进行此转换吗?Django中是否已经实现了任何东西?

PS:在 UpdateView 中,如果我删除了一个标签,我如何才能将它从关系中删除,因为我必须手动进行解析?

谢谢。

4

1 回答 1

0

最简单的方法是先删除所有标签pub.tags,然后将它们全部重新添加:

# Clear the existing tags
pub.tags.clear()

tags = tags.split(',')
for tag in tags:
    obj, create = Tag.objects.get_or_create(name=tag)
    pub.tags.add(obj)

您可以尝试这种更 Python 的方法,而不是循环和构建字符串:

标签 = ['red', 'green', 'blue'] ','.join(tags) 'red,green,blue'

于 2012-11-16T16:20:21.727 回答