Django模型;在保存时在ManyToMany字段中保存额外的项目

时间:2011-01-16 17:53:55

标签: django manytomanyfield

所以我目前正在一个已经存在的数据库上实现一个新的标记系统。

当前标记系统使用ManyToMany字段,但客户端希望使用逗号分隔的输入字段(CharField)。

所以我认为最好的方法是在不损害当前架构的情况下启用新的逗号分隔字段,而是将标记写为以前的ManyToMany架构。

但是我尝试这样做,标签会保存到数据库标签模型中,但不会保存在应该应用的条目上。

简单的纲要:

 def save(self, *args, **kwargs):

    currTags = self.placeHolderTags.split(",") 

    for tag in currTags:
        dbtag, created = Tag.objects.get_or_create(name=tag)
        self.tags.add(dbtag)

    super(BeeldBankEntry, self).save(*args, **kwargs)

进一步的模特背景:

tags            =   models.ManyToManyField(Tag, verbose_name='Tags', blank=True)
placeHolderTags =   models.CharField(max_length=400, verbose_name='Tags2', blank=True)

1 个答案:

答案 0 :(得分:2)

这是因为django在模型本身之后节省了m2m字段。我不确定在save()中的代码之前保存是否会有所帮助,请查看m2m_change d信号 - 它看起来就像你需要的那样。