Django admin: filter_horizontal с пользовательским поиском/фильтром результатов
У меня есть простая модель с ManyToManyField.
class Meeting(models.Model):
place = models.CharField()
date = models.DateField()
persons = models.ManyToManyField(Person)
Модель человека содержит основную информацию о человеке.
class Person(models.Model):
login = models.CharField(unique=True)
first_name = models.CharField()
last_name = models.CharField()
def __str__(self):
return self.login
В моем классе MeetingAdmin(ModelAdmin) у меня есть filter_horizontal('persons',), который используется для добавления нескольких человек при создании нового объекта Meeting. Это работает совершенно нормально. В левом меню отображается список всех людей (фильтрация по login).
Как вы, возможно, знаете, filter_horizontal содержит окно поиска в верхней части левого меню.
Примеры
Я также хотел бы иметь возможность фильтровать людей по их имени и фамилии. Например, если есть человек с полями (login='mylogin', first_name='John', last_name='Smith') и я набираю в поисковой строке 'Jo' или 'Smi', то этот человек отображается как результат поиска, и т.д. 'mylogin', так как поле login является представлением модели Person.