У меня есть следующие три модели:
class Participant(models.Model):
participant_id = models.AutoField(primary_key=True)
pin = models.CharField(unique=True, max_length=4,
validators=[RegexValidator(r'^\d{1,10}$')])
class Teacher(models.Model):
teacher_id = models.AutoField(primary_key=True)
participant_id = models.OneToOneField(Participant, on_delete=models.CASCADE)
email = models.EmailField()
compensation_id = models.OneToOneField(Compensation, on_delete=models.CASCADE)
class Compensation(models.Model):
compensation_id = models.AutoField(primary_key=True)
wage = models.DecimalField(max_digits=6, decimal_places=2)
Подводя итог,
- У участников разные типы, одна из них - Учитель (отношение OneToOne). * Учитель - это один из типов сотрудников, которые получают вознаграждение и связаны (отношение OneToOne) с моделью вознаграждения
Учитель Компенсация
Проблема:
Я использую Участника как основную модель и добавляю к нему учителя. Однако, когда я пытаюсь сложить компенсацию к нему, он, по-видимому, не работает из-за отсутствия отношения внешнего ключа между моделями участника и компенсации.
Простым выходом было бы иметь поля модели компенсации в модели учителя. Однако это создаст избыточность, когда я захочу связать с ним другие типы участников.
Что потенциально может быть решением этой проблемы? Я готов изменить модель, если это упростит или упростит задачу.
PS Есть также другие типы участников (Ребенок, Родитель), о которых я не упомянул.
PSS В вышеупомянутых моделях есть и другие поля, которые я не упомянул для простоты.