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

Django 正在获取save()中新创建的对象的ID,django,model,save,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):

我想保存一个对象,以便保存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_项目不会出现,。有没有办法把这些拿出来?

这里有些混乱

一旦调用了
super
self.id
将有一个值

但是,我不明白你的
过滤器
调用的意义。首先,您可能指的是
get
而不是
filter
,因为filter获取的是查询集,而不是单个实例。但即便如此,这个调用也是毫无意义的:您刚刚保存了它,所以从数据库中返回的任何内容都将完全相同。重点是什么


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

对不起,我的错,我把信息放错了。我重写了我的问题。我所做的是尝试获得大量的物品。但出于某种原因,他们不会对你的回答表示感谢。我正在尝试使用m2m_已更改的信号。models.signals.m2m\u changed.connect(set\u total\u price,sender=Deal.product.through)由于某种原因,它不会调用我的set\u total\u price方法。它与post_保存信号一起工作。。。嗯,我有些事情要再试一次。非常感谢。进一步阅读:我通过迭代实例来阅读save_表单集中的M2M。然后我调出保存的项目并用新值保存它。