Stack Inline Multiple Django моделей в Admin с косвенной связью - PullRequest
1 голос
/ 05 мая 2020

У меня есть следующие три модели:

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 В вышеупомянутых моделях есть и другие поля, которые я не упомянул для простоты.

...