def __init__(self, field, request, params, model, admin_view, field_path): self.field = field self.field_path = field_path self.title = getattr(field, 'verbose_name', field_path) self.context_params = {} super(FieldFilter, self).__init__(request, params, model, admin_view) for name, format in self.lookup_formats.items(): p = format % field_path self.context_params["%s_name" % name] = FILTER_PREFIX + p if p in params: value = prepare_lookup_value(p, params.pop(p)) self.used_params[p] = value self.context_params["%s_val" % name] = value else: self.context_params["%s_val" % name] = '' map(lambda kv: setattr(self, 'lookup_' + kv[0], kv[1]), self.context_params.items())
def __init__(self, request, params, model, admin_view): super(InputFilter, self).__init__(request, params, model, admin_view) # 确保子类设置了 lookup_formats 成员 if self.lookup_formats is None: raise ImproperlyConfigured( "The filter '%s' does not specify " "a 'lookup_formats'." % self.__class__.__name__) # 设置 self.lookup_[key] = value,和 self.context_params、self.used_params self.context_params = {} #传给模板的context变量 for name, format in self.lookup_formats.items(): p = format % self.parameter_name self.context_params["%s_name" % name] = FILTER_PREFIX + p if p in params: value = prepare_lookup_value(p, params.pop(p)) self.used_params[p] = value self.context_params["%s_val" % name] = value else: self.context_params["%s_val" % name] = '' map(lambda kv: setattr(self, 'lookup_' + kv[0], kv[1]), self.context_params.items())