Два свойства, которые соотносятся друг с другом в другой модели

Простите, что название может быть непонятным, но я не носитель английского языка и очень новичок в терминах django.

У меня есть такой сценарий: У факультета может быть много филиалов. У меня есть модель студента, где у него есть два свойства, факультет и филиал.

Когда я выбираю его отдел, я хочу, чтобы он принимал (и показывал в панели администратора) только филиалы, которые связаны с этим отделом, мой код пока такой:

class Entity(models.Model):
    id = models.UUIDField(primary_key=True , default = uuid.uuid4, editable=False)
    

class Department(Entity):
    name = models.CharField(max_length=100, null=False)


class Branch(Entity):
    name = models.CharField(max_length=100, null=False)
    dep = models.ForeignKey(Department, related_name='branches', on_delete=models.CASCADE)


class Student(Entity):
    #Some Fields here
    department = models.ForeignKey(Department, related_name='students', on_delete=models.CASCADE)
    branch = models.ForeignKey(Branch, related_name='students', on_delete=models.CASCADE)

Предположим, что у меня есть 2 факультета (CE и CS), CE имеет 2 филиала, а CS имеет 3 филиала, что я хочу, когда я выбираю факультет студента, я хочу, чтобы филиалы были показаны только те, которые существуют на этом факультете, что я получаю 5 филиалов (в этом примере).

Как я могу это решить?

NOTE: Я не играл ни с чем, связанным с панелью администратора, кроме регистрации моделей. Заранее спасибо и извините, если название или любая другая часть не очень корректна.

Есть два решения:

  1. переопределите функцию save() и проверьте ветку.
  2. Проверьте ветку внутри формы, переопределив функцию clean_branch()
  3. .

Лучше реализовать оба варианта.

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