在save()中获取新创建的对象的ID

时间:2011-04-14 19:46:35

标签: django model save

我想保存一个对象,以便保存M2M。然后我想读出M2M字段进行一些计算并在保存的对象上设置一个字段。

class Item(models.Model):
    name = models.CharField(max_length=20, unique=True)
    product = models.ManyToManyField(SomeOtherModel, through='SomeTable')

    def save(self, *args, **kwargs):
        super(Item, self).save(*args, **kwargs)
        m2m_items = SomeTable.objects.filter(item = self)
        # DO SOME STUFF WITH THE M2M ITEMS

m2m_items不会出现。有没有办法搞定这些?

1 个答案:

答案 0 :(得分:4)

这里有些混乱。

拨打super后,self.id将有一个值。

但是,我不明白你filter电话的意思。首先,您可能意味着get而不是filter,因为过滤器获取查询集,而不是单个实例。但即便如此,这个电话也毫无意义:你只是只是保存了它,所以无论你从数据库中得到什么都将是完全相同的。有什么意义?

问题更新后修改好的,谢谢您的澄清。但是,模型的save()方法不负责对M2M项目执行任何操作。它们需要单独保存,这是表单或视图的工作。