我正在尝试研究 models.cascade 语句的正确用法。我有两个型号 Cart 和 Entry。如果我删除一个条目,删除不会在购物车条目上更新。我已经通过管理界面检查过了。我的 models.py 如下:
class Cart(models.Model):
user = models.ForeignKey(User, null=True, blank=True, on_delete=models.CASCADE)
count = models.PositiveIntegerField(default=0)
total = models.DecimalField(default=0.00, max_digits=10, decimal_places=2)
updated = models.DateTimeField(auto_now=True)
timestamp = models.DateTimeField(auto_now_add=True)
objects = CartManager()
def __str__(self):
return "Cart:{} User:{} Items:{} Total:£{}".format(self.id, self.user, self.count, self.total)
class Entry(models.Model):
product = models.ForeignKey(Product, null=True, on_delete=models.CASCADE)
cart = models.ForeignKey(Cart, null=True, on_delete=models.CASCADE)
quantity = models.PositiveIntegerField(default=0)
请您参考如下方法:
我相信您对级联的概念倒置了。根据您的模型,当您针对外键关系在 Cart 上调用 delete 时,您的 Entry 将被删除。如果您希望删除操作反向进行,您需要添加一些额外的代码来处理它。你可以看看 Django cascade delete on reverse foreign keys有关如何实现它的一些想法(如果那是您需要的)。
