如何根据 Django 模型中的另一个字段使字段唯一?

how to make a field unique based on another filed in django models?

我想根据同一模型中的另一个字段使一个字段唯一,这是我的模型:

    class Shop(models.Model):
        name = models.CharField(max_length=50)

    class Product(models.Model):
        name = models.CharField(max_length=50, unique=True)
        shop = models.ForignKey(Shop, on_delete=models.CASCADE)

我希望产品的名称仅基于店铺是唯一的,例如,如果我们从店铺a获得产品a,店铺a就不能制作其他产品名称为 a,但商店 b 可以生产名称为 a 的产品。 例如,我们在模型中有 name = models.CharField(unique_for_date=date_field),这使得名称对于 date_field 的日期是唯一的。 有没有类似 unique_for_date 的东西? 我可以在模型中处理这个操作还是我应该尝试在视图或表单中处理它?

在你的 Product table:

class Product(...):
    ...

    class Meta:
        unique_together = ('shop', 'name')

这将确保 Products 在它们相关的 Shop 中必须具有唯一的名称。