0

我有 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 信号,但我宁愿使用数据库约束,但我没有看到数据库约束来强制执行此操作。

4

1 回答 1

0

你有没有调查过unique_together。我认为这会做你想做的事。

还要记住以下几点。

UniqueConstraint 提供了比 unique_together 更多的功能。unique_together 将来可能会被弃用。

于 2020-09-03T20:30:00.913 回答