Django:在保存时从m2m-field中检索值

时间:2012-04-22 15:08:57

标签: django django-models

从管理界面保存时,我在检查多对多字段中的选定字段时遇到问题。

这是我模型的简化版本。

class Template(models.Model):
    name = models.CharField('name', max_length = 100)
    sites = models.ManyToManyField(Sites)

    def save(self, *args, **kwargs):
        // Do something with the value of sites
        for site in self.sites.all():
            print site

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

这应该在管理界面中保存时打印所有选定的网站。但是,这实际上会打印保存之前选择的所有站点!

图片我有一个名为'foo'的模板和网站['a','b']。当我在管理界面中编辑它并取消选择网站'b'时,我希望它打印['a']。但是,输出是['a','b'],例如旧的价值。

有谁知道如何解决这个问题?

非常感谢帮助!

1 个答案:

答案 0 :(得分:0)

调用save将提交更改,因此您可能希望之后迭代这些网站,如下所示:

def save(self, *args, **kwargs):
    super(Template, self).save(*args, **kwargs)
    for site in self.sites.all():
        print site

如果您特别想在保存前或保存后执行操作,请查看how signals work in Django