2012-04-22 50 views
0

从管理界面保存时,我遇到了从多对多字段中检索选定字段的问题。Django:在保存时从m2m字段检索值

这是我的模型的简化版本。

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'],例如旧的价值。

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

非常感谢帮助!

回答

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