I want to make the name of a submodel unique but I can't think of a way to do it. Imagine I have the following model architecture:

```
class Animal(models.Model):
   name = field.CharField(...)
   class Meta:
      abstract = False

class Panther(Animal):
   class Meta:
     ...

class Tiger(Animal):
   class Meta:
    ....

```

Now, what I want is that within the scope of the subclasses, the name of should be unique. So let's say I have a Tiger called JackTheTiger and a Panther called JackyThePanther, then no other Tiger with this name should allowed to be created and no other Panther with the name JackyThePanther should be allowed to be created.

But I want to be able to create a Tiger which is called JackyThePanther and a panther which is also called JackyThePanther. So the uniqueness should only be applied within the scope of the submodel.

I tried 2 ways to achieve what I want, both are not optimal:

1. I create a name field for each submodel and make it unique. But then I can't query all animals and serialize the name. It also seems like bad architecture to me
2. I make Animal abstract. But this is no option for me since I need the database table for animal
(3. I also thought about a custom validator but I don't think it's possible because I could only validate the instances of the Supermodel)

Is there another way to achieve what I intend? Help is very much appreciated, thanks in advance