OneToOneField, уникальность и наследование в Django
Я хотел бы иметь отношения между моделью User и одной из различных (но связанных) моделей, но это должно быть только с одной из доступных моделей, например, различные виды подписок, но у пользователя может быть только одна связанная.
Я знаю, что могу решить эту проблему с помощью множества пользовательских проверок, но я хочу знать, есть ли рекомендуемое или простое решение.
Если я использую наследование и определяю базовую модель, давайте поместим "BaseModel" с полем OneToOneField для User, и от этой модели они унаследуют несколько: ModelA и ModelB,
class ModelBase(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="model_base")
class Meta:
abstract = True
class ModelA(ModelBase):
pass
class ModelB(ModelBase):
pass
Django выдает эту ошибку
Reverse accessor 'User.model_base' for 'models.ModelA.user' clashes with reverse accessor for 'models.ModelB.user'.
Я понимаю, что определение другого related_name в субмоделях решает эту проблему, но это не сохраняет условие "уникальности".
Каким было бы лучшее решение для этой проблемы? Могу ли я избежать использования GenericForeignKeys?
Спасибо!