如何创建django过滤器的链接
场景:
产品可以在数据库中定义多个属性,我希望能够通过这些属性进行过滤。
  由于我还没有找到使用django-filter使用动态属性的方法,目前通过使用django过滤器MethodFilter来实现, MethodFilter作为查询字符串传递的属性解析为: 
 /products?attribute=size_2&attribute=color_red 
像这样的网址被解析并且可以工作。
问题是建立网址:
我无法找到合理的方法来构建网址,这会考虑当前的搜索参数并添加/替换这些参数。
Django似乎迫使我使用urlconf,但django-filter使用查询字符串参数。
我试图达到的是这样的:
  该用户在页面/products?attribute=size_10上显示具有该尺寸的所有产品。  当他点击“红色”链接时,新的url变成: /products?attribute=size_10&attribute=color_red 
你能指出我实现这个Django的方式吗?
  如果您在中间件中包含"django.core.context_processors.request",那么可以在您的模板中访问request.get。 
然后你可以构建一个过滤器,在构建你正在谈论的链接时返回你想要的'GET'变量。
这是我做的一个代码:
@register.simple_tag(takes_context=True)
def lessonapp_preserved_filters(context, url, dayofweek):
    opts = context.get('opts')
    preserved_filters = context.get('preserved_filters')
    parsed_url = list(urlparse(url))
    parsed_qs = dict(parse_qsl(parsed_url[4]))
    merged_qs = dict()
    if opts and preserved_filters:
        preserved_filters = dict(parse_qsl(preserved_filters))
        match_url = '/%s' % url.partition(get_script_prefix())[2]
        try:
            match = resolve(match_url)
        except Resolver404:
            pass
        else:
            current_url = '%s:%s' % (match.app_name, match.url_name)
            changelist_url = 'admin:%s_%s_changelist' % (opts.app_label, opts.model_name)
            if changelist_url == current_url and '_changelist_filters' in preserved_filters:
                preserved_filters = dict(parse_qsl(preserved_filters['_changelist_filters']))
        preserved_filters['dayofweek__exact'] = dayofweek
        merged_qs.update(preserved_filters)
    merged_qs.update(parsed_qs)
    parsed_url[4] = urlencode(merged_qs)
    return urlunparse(parsed_url)
然后在模板中我使用它是这样的:
{% lessonapp_preserved_filters adm_url '1' %}
