2012-11-16 28 views
0

我正在尝试使用m2m字段。Django定义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中,如果我删除了一个标签,那么我怎样才能从关系中删除它,因为我必须手动进行解析?

谢谢。

回答

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方法:

标签= [ '红', '绿', '蓝'] ''。加入(标签) '红,绿,蓝'

+0

很酷。我不知道加入! – EsseTi