簡體   English   中英

Django 正確使用 Models.Cascade (on_delete)

[英]Django Correct Usage of Models.Cascade (on_delete)

我正在嘗試使用 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 級聯刪除,以了解有關如何實現的一些想法(如果這是您需要的)。

因為您沒有關聯EntryCart ,只需設置 Entry ForeignKey 並使用 on_delete。 當您刪除購物車時,與其關聯的條目將被刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM