def choices(self, cl): yield { 'selected': self.lookup_val is None, 'query_string': '?', 'display': _('All') } for up in self.lookup_choices: yield { 'selected': self.lookup_val == smart_unicode(up.id), 'query_string': cl.get_query_string({self.lookup_kwarg: up.id}), 'display': up.name_cn } FilterSpec.register_first(lambda f: bool(f.name == 'visit_begin'), AreaFilterSpec) class DealerTypeFilterSpec(FilterSpec): def __init__(self, f, request, params, model, model_admin): super(DealerTypeFilterSpec, self).__init__(f, request, params, model, model_admin) self.lookup_title = u'经销商' #rel_name = f.rel.get_related_field().name #c = f.name #xx = f.rel.get_related_field() self.lookup_kwarg = DEALER_TYPE_VAR self.lookup_val = request.GET.get(DEALER_TYPE_VAR, None) self.lookup_choices = DealerType.objects.all().order_by('id')
#c = f.name #xx = f.rel.get_related_field() self.lookup_kwarg = PERMS_VAR self.lookup_val = request.GET.get(PERMS_VAR, None) self.lookup_choices = UserPermission.objects.all().order_by('id') def has_output(self): return len(self.lookup_choices) > 1 def title(self): return self.lookup_title def choices(self, cl): yield { 'selected': self.lookup_val is None, 'query_string': '?', 'display': _('All') } for up in self.lookup_choices: yield { 'selected': self.lookup_val == smart_unicode(up.id), 'query_string': cl.get_query_string({self.lookup_kwarg: up.id}), 'display': up.name } FilterSpec.register_first(lambda f: bool(f.name == 'user_permissions'), PermsFilterSpec)
class PermsFilterSpec(FilterSpec): def __init__(self, f, request, params, model, model_admin): super(PermsFilterSpec, self).__init__(f, request, params, model, model_admin) self.lookup_title = f.verbose_name #rel_name = f.rel.get_related_field().name #c = f.name #xx = f.rel.get_related_field() self.lookup_kwarg = PERMS_VAR self.lookup_val = request.GET.get(PERMS_VAR, None) self.lookup_choices = UserPermission.objects.all().order_by('id') def has_output(self): return len(self.lookup_choices) > 1 def title(self): return self.lookup_title def choices(self, cl): yield {'selected': self.lookup_val is None, 'query_string': '?', 'display': _('All')} for up in self.lookup_choices: yield {'selected': self.lookup_val == smart_unicode(up.id), 'query_string': cl.get_query_string({self.lookup_kwarg: up.id}), 'display': up.name} FilterSpec.register_first(lambda f: bool(f.name == 'user_permissions'), PermsFilterSpec)
def has_output(self): return len(self.lookup_choices) > 1 def title(self): return self.lookup_title def choices(self, cl): yield {'selected': self.lookup_val is None, 'query_string': '?', 'display': _('All')} for up in self.lookup_choices: yield {'selected': self.lookup_val == smart_unicode(up.id), 'query_string': cl.get_query_string({self.lookup_kwarg: up.id}), 'display': up.name_cn} FilterSpec.register_first(lambda f: bool(f.name == 'visit_begin'), AreaFilterSpec) class DealerTypeFilterSpec(FilterSpec): def __init__(self, f, request, params, model, model_admin): super(DealerTypeFilterSpec, self).__init__(f, request, params, model, model_admin) self.lookup_title = u'经销商' #rel_name = f.rel.get_related_field().name #c = f.name #xx = f.rel.get_related_field() self.lookup_kwarg = DEALER_TYPE_VAR self.lookup_val = request.GET.get(DEALER_TYPE_VAR, None) self.lookup_choices = DealerType.objects.all().order_by('id') def has_output(self): return len(self.lookup_choices) > 1
accords = models.TextField(u'Аккорды', blank=True) translation = models.TextField(u'Перевод песни', blank=True) accords.test_null_filter = True translation.test_null_filter = True """ def __init__(self, f, request, params, model, model_admin): super(EmptyStringFilterSpec, self).__init__(f, request, params, model, model_admin) self.lookup_kwarg = '%s__exact' % f.name self.lookup_kwarg2 = '%s__gt' % f.name self.lookup_kwarg3 = '%s__isnull' % f.name self.lookup_val = request.GET.get(self.lookup_kwarg, None) self.lookup_val2 = request.GET.get(self.lookup_kwarg2, None) def title(self): return u"наличие поля '%s'" % self.field.verbose_name def choices(self, cl): yield {'selected': self.lookup_val2 is None and self.lookup_val is None, 'query_string': cl.get_query_string({}, [self.lookup_kwarg2, self.lookup_kwarg, self.lookup_kwarg3]), 'display': u'Все'} yield {'selected': self.lookup_val2 == '' and self.lookup_val is None, 'query_string': cl.get_query_string({self.lookup_kwarg2: ''}, [self.lookup_kwarg, self.lookup_kwarg3]), 'display': u'Имеется'} yield {'selected': self.lookup_val == '' and self.lookup_val2 is None, 'query_string': cl.get_query_string({self.lookup_kwarg: ''}, [self.lookup_kwarg2, self.lookup_kwarg3]), 'display': u'Отсутствует'} FilterSpec.register_first(lambda f: hasattr(f, 'test_null_filter'), EmptyStringFilterSpec)