0

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

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

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

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

非常感谢您的帮助!

4

1 回答 1

0

Calling save will commit the changes, so you probably want to iterate over the sites afterwards, like this:

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

If you specifically want to perform an action pre or post save, then have a look at how signals work in Django.

于 2012-04-22T18:27:48.160 回答