【问题标题】:Good practices for a flexible search page - Django灵活搜索页面的良好实践 - Django
【发布时间】:2011-03-13 06:55:10
【问题描述】:

我只是想知道是否可以从其他人那里获得关于该主题的任何示例。

我在 Django 中有一个页面,它使用过滤器来执行搜索。

目前我正在对 GET 参数进行简单检查,并相应地将 .filter() 添加到查询集:

if color:
  query.filter(color=color)

这感觉有点像一种丑陋的做法,我一直在想如何让它更有活力。

有什么想法吗?

【问题讨论】:

    标签: python django django-models filter django-queryset


    【解决方案1】:

    试试这个:

    ALLOWED = ('color', 'size', 'model')
    kwargs = dict(
        (key, value)
        for key, value in request.GET.items()
        if key in ALLOWED
    )
    query.filter(**kwargs)
    

    这将允许您发出类似/search/?color=red&size=1/search/?model=Nikon&color=black 的请求。

    【讨论】:

    • 不可能!这很棒!你能用你刚才给我看的方法使用任何功能的dicts吗?
    • 对 DateTime 有什么建议吗?
    • 可以,但不能使用国际字符作为关键字参数的名称,如果要这样做,应使用以下语法: def test(**kwargs): param = kwargs[' параметр'] # 做点什么。
    • 对于日期时间,您需要添加解析。为此使用pypi.python.org/pypi/python-dateutil/1.5。代码会稍微复杂一些。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2011-03-09
    • 2015-06-09
    相关资源
    最近更新 更多