Django admin: использование дополнительного поля для фильтрации выпадающих значений - PullRequest
0 голосов
/ 03 мая 2020

У меня есть такая модель древоборода (упрощенная версия)

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, которое Древобород также создает).
Это выполнимо? Если да, то как?

...