Можно ли установить только определенный тип пользователя в качестве внешнего ключа в поле модели

У меня есть модель CustomUser, которая хранит два типа пользователей, преподавателей и студентов. В модели есть поле regd_as, которое хранит тип пользователя. Модель выглядит следующим образом:

class CustomUser(AbstractBaseUser, PermissionsMixin):
    
    REGD_AS_CHOICES = (
        ('TCH', 'TEACHER'),
        ('STU', 'STUDENT'),
    )
    
    id = models.UUIDField(primary_key = True, editable = False, default = uuid.uuid4)
    
    email = models.EmailField(unique=True)
    
    date_joined = models.DateTimeField(auto_now_add = True)
    
    regd_as = models.CharField(max_length= 10, choices= REGD_AS_CHOICES, null=True)
    
    is_staff = models.BooleanField(default=False)
    is_active = models.Boolea

Теперь я хочу иметь модель, которая будет хранить реферальный код, сгенерированный только для пользователей, которые являются учителями. Модель выглядит следующим образом:

class ReferalCode(models.Model):
    
    id = models.UUIDField(primary_key=True, editable=False, default=uuid.uuid4)
    
    teacher_user = models.ForeignKey(CustomUser, on_delete=models.SET_NULL, related_name='teacher_user_referal', null=True)
    
    referal_code = models.CharField(max_length=100, unique=True,null=True, blank=True)

Вопрос

Есть ли способ задать только учителей из модели **CustomUser** в качестве foreignkey для teacher_user напрямую?

В настоящее время я использую сигналы для хранения только учителей в качестве пользователя в модели ReferalCode.

Вернуться на верх