Фильтрация ФК из другой модели с помощью list_filter - PullRequest
1 голос
/ 09 октября 2011

Как мне создать список_фильтров Назначенных банкиров на модели Клиента?

class AssignedBanker(models.Model):
    client         = models.ForeignKey(Client)
    banker         = models.ForeignKey(User)
    # ...

class Client(models.Model):
    account_name        = models.CharField(max_length=100)
    # ...

class ClientAdmin( MyModelAdmin ):
    list_filter = [ ??? ]

1 Ответ

1 голос
/ 09 октября 2011

Путем написания списка класса, который наследуется от SimpleListFilter :

from django.utils.translation import ugettext_lazy as _
from django.contrib.admin import SimpleListFilter, RelatedFieldListFilter

class AssignedBankerListFilter(SimpleListFilter):
    title = _('assignment')
    parameter_name = 'assignment'

    def lookups(self, request, model_admin):
       return AssignedBanker.objects.values_list('banker', 'banker__first_name',).distinct().order_by('banker__first_name')

    def queryset(self, request, queryset):
        if not self.value():
            return queryset
        assigned = AssignedBanker.objects.filter(banker=self.value())
        clients = [p.client.id for p in assigned]
        return queryset.filter(id__in=clients)

class ClientAdmin( MyModelAdmin ):
    list_filter = [AssignedBankerListFilter, ]
...