Два свойства, которые соотносятся друг с другом в другой модели
Простите, что название может быть непонятным, но я не носитель английского языка и очень новичок в терминах 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: Я не играл ни с чем, связанным с панелью администратора, кроме регистрации моделей. Заранее спасибо и извините, если название или любая другая часть не очень корректна.
Есть два решения:
- переопределите функцию save() и проверьте ветку.
- Проверьте ветку внутри формы, переопределив функцию clean_branch() .
Лучше реализовать оба варианта.