我有 django 应用程序,用于跟踪各种客户的合同、位置和产品。合同、位置每个都使用 ForeignKey 引用客户端。
class Location(models.Model):
client = models.ForeignKey(Client, on_delete=models.CASCADE)
...
class Contract(models.Model):
client = models.ForeignKey(Client, on_delete=models.CASCADE)
...
我还有一个产品将部署在一个位置,根据合同,为客户。我需要在产品中包含客户,因为参考用于保护该客户的记录。
class Product(models.Model):
client = models.ForeignKey(Client, on_delete=models.CASCADE)
contract = models.ForeignKey(Contract, on_delete=models.CASCADE)
location = models.ForeignKey(Location, on_delete=models.CASCADE)
....
确保永远不会创建包含所有 3 个模型的不同客户参考的产品的最佳方法是什么?我在想我可以使用 pre_save 信号,但我宁愿使用数据库约束,但我没有看到数据库约束来强制执行此操作。