Django定义m2m字段转换(从字符串到字符串)

时间:2012-11-16 09:55:57

标签: django many-to-many django-orm m2m

我正在尝试使用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+","

重点是:

  • 我是否必须每次都将list转换为string和string to list?
  • 我可以在某处指定如何进行此转换吗? Django中是否有任何实现?

PS:在UpdateView中,如果我删除了一个标签,我怎么能从关系中删除它,因为我必须手工解析?

感谢。

1 个答案:

答案 0 :(得分: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)

您可以尝试使用更多pythonic方法,而不是循环和构建String:

  
    
      

tags = ['red','green','blue']       ''。加入(标签)           '红,绿,蓝'