如何更新Django中many2many更新的last_changed字段

时间:2017-02-07 08:12:51

标签: django model

想象一下,我有两个模型PizzaTopping,而Pizza模型的last_changed字段包含auto_now=TrueManyToMany关系到Topping

我现在希望每当我向last_changed添加另一个Topping时都会更新Pizza字段。遗憾的是,由于Pizza模型在这种情况下未得到保存,因此不会自动更新。这是因为ManyToMany关系保存在单独的(自动创建的)模型和表中。

那么更新last_changed字段的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以在Pizza模型上使用方法,只要向其添加Topping,就会调用该方法。

class Pizza(models.Model):
    toppings = models.ManyToManyField('Toppings', related_name="pizzas")
    last_changed = models.DateTimeField(auto_now=True, blank=True)
    # Your other fields here

    def add_topping(self, topping):
        self.toppings.add(topping)
        self.save()  # Which would update last_changed

但我也建议不要使用auto_nowsee this link)。