想象一下,我有两个模型Pizza
和Topping
,而Pizza
模型的last_changed
字段包含auto_now=True
和ManyToMany
关系到Topping
。
我现在希望每当我向last_changed
添加另一个Topping
时都会更新Pizza
字段。遗憾的是,由于Pizza
模型在这种情况下未得到保存,因此不会自动更新。这是因为ManyToMany
关系保存在单独的(自动创建的)模型和表中。
那么更新last_changed
字段的最佳方法是什么?
答案 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_now
(see this link)。