【发布时间】:2021-02-20 10:59:28
【问题描述】:
我希望模型中的一个字段基于另一个字段是唯一的,但反之则不然。
例如:
class Shipment(models.Model):
supplier = models.ForeignKey("Supplier", on_delete=models.PROTECT, related_name='shipments')
external_id = models.CharField(max_length=128)
我希望两批货物不能有相同的供应商和相同的external_id,但可以有相同的external_id 和不同的供应商,或者相同的供应商和不同的external_id。
我知道 unique_together。但它使供应商只有一个 external_id。但是,我希望供应商有多个 external_id,而它们都是唯一的。
我可以在 save() 方法中检查这个约束,但我想要一个数据库约束,或者更聪明的东西。
【问题讨论】:
-
检查一下,你保存在哪里
Shipment:if Shipment.objects.filter(supplier_id=supplier_id, external_id=external_id).exists(): raise error here -
谢谢,但这就像在 save() 方法中检查它一样。
标签: django django-models django-constraints