从管理界面保存时,我在检查多对多字段中的选定字段时遇到问题。
这是我模型的简化版本。
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 :(得分: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。