1
我有一個關於設計Django模型和考慮對級聯刪除有影響的一般性問題。假設資產管理應用程序的以下簡單設計。Django模型:如何避免級聯刪除
class Asset(models.Model):
aquire_date = models.DateField()
cost = models.DecimalField(max_digits=16, decimal_places=2)
description = models.CharField(max_length=30)
account = models.ForeignKey(Account)
vendor = models.ForeignKey(Vendor)
department = models.ForeignKey(Department)
class Vendor(models.Model):
name = models.CharField(max_length=70)
city = models.CharField(max_length=50
phone = PhoneNumberField()
email = models.EmailField()
class Account(models.Model):
account_number = models.IntegerField()
description = models.CharField(max_length=50)
class Department(models.Model):
number = models.IntegerField(unique=True)
name = models.CharField(max_length=50)
因此,每個資產有3個ForeignKey字段到其他表。閱讀Django documentation它說'任何有外鍵指向要刪除的對象的對象將隨同它一起被刪除'。我讀到這意味着如果刪除Department對象,Asset對象或對象,ForeignKey所指的也將被刪除。但如果我刪除資產,則部門,供應商和帳戶仍然存在。
這是正確的方式來了解級聯刪除在Django?
我寧願什麼是
- 當資產被刪除,任何部門,供應商或帳戶被刪除;
- 刪除部門時,不會刪除資產,但指向該部門的所有ForeignKey字段都設置爲空。
這可能嗎?
菲爾,謝謝你的回答!這工作!我認爲你寫出答案的速度快於我創建問題的速度。有時候你知道你想做什麼,很難在Django文檔中找到它。 – titleistfour