Как фильтровать варианты foreingkey в Django Admin?
У меня есть 3 простые модели:
class Department(models.Model):
name = models.CharField(
max_length=30
)
class Company(models.Model):
name = models.CharField(
max_length=30
)
department = models.ManyToManyField(Department)
class Employee(models.Model):
name = models.CharField(
max_length=30
)
company = models.ForeignKey(Company,
on_delete=SET_NULL,
null=True,
blank=True,
)
department = models.ForeignKey(to=Department,
on_delete=DO_NOTHING)
Я хочу ограничить опции отдела в панели Django Admin только теми, которые связаны с компанией сотрудника. Например:
Факультеты:
HR, DevOpps, WebApps, TVApps
Компании:
Компания_1 с отделами - HR, DevOpps, WebApp
Компания_2 с отделами - HR, DevOpps, TVApps
Добавить сотрудника:
если выбрана компания Company_1, варианты отделов должны быть: HR, DevOpps, WebApp
если выбрана компания_2, то варианты отделов будут такими: HR, DevOpps, TVApps
Похоже, что вы хотите реализовать зависимое выпадение в ваших формах?
Здесь есть отличная статья, которой я следовал в прошлом, и которую вы можете использовать для решения этой проблемы, по сути фильтруя варианты с помощью ajax.
Я также видел, что этот вопрос хорошо решается в htmx, если вы хотите попробовать. На их странице примеров показана реализация value-select.
Спасибо. Я обязательно воспользуюсь этим. Но мне нужно знать, возможно ли в этой модели ограничить Employee. Я имею в виду, чтобы Employee был недействительным, если Employee.company и Employee.department не связаны друг с другом по какой-либо причине.