Django предоставляет опцию Meta, называемую уникальным вместе, которая, кажется, удовлетворяет этому варианту использования:
class Brand(models.Model):
name = models.CharField(max_length=127)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
class Meta:
unique_together = [[“name”, “category”]]
Документы Django указывают, что это может быть устаревшим, и рекомендуют более полнофункциональный мета-вариант UniqueConstraint
class Meta:
constraints = [
UniqueConstraint(fields=[“name”,”category”], name=“unique_object”)
]