У меня есть такая модель древоборода (упрощенная версия)
from django.db import models
from treebeard.mp_tree import MP_Node
class CompanyHierarchy(MP_Node):
department = models.CharField(max_length=30)
employee_title = models.CharField(max_length=300)
employee_name = models.CharField(max_length=300)
Она имеет 6 уровней глубины и тысячи записей. Теперь я хотел бы добавить новую модель с отношениями между сотрудниками
class Links(models.Model):
from = models.ForeignKey("CompanyHierarchy", on_delete=models.CASCADE)
to = models.ForeignKey("CompanyHierarchy", on_delete=models.CASCADE)
Теперь, CompanyHierarchy
имеет тысячи записей, поэтому добавление новой панели администрирования от Links
до django очень громоздко, так как Вы должны выбрать одну запись из тысяч в выпадающем меню. Как я могу сделать это более удобным для пользователя?
Я думал о добавлении дополнительных полей в django admin, чтобы можно было отфильтровать опции выпадающего меню. Например, добавление дополнительного поля department
, чтобы я мог его сначала выбрать, а затем выпадающее меню для from
будет отфильтровано, чтобы включить только этот отдел.
Или (еще лучше) добавление дополнительного поля для настройки depth
сначала (древобород создает это поле), затем с дополнительным полем, в котором будут отображаться только записи этого выбранного depth
, затем параметры фильтрации в раскрывающемся меню, чтобы включить только записи, которые являются дочерними элементами выбранного элемента (используя поле path
, которое Древобород также создает).
Это выполнимо? Если да, то как?