【问题标题】:Django admin: filtering by "now" in list viewDjango admin:在列表视图中按“现在”过滤
【发布时间】:2011-10-14 13:07:49
【问题描述】:

我有一个实现时间范围的 Django 模型,如下所示:

class Period(models.Model):
    start_time = models.DateTimeField(_(u'start time'))
    end_time = models.DateTimeField(_(u'end time'))

我也有一个简单的 ModelAdmin。我想在管理列表视图中提供一个过滤器,将这些时期分为“未来”、“进行中”和“过去”。我可以分别为 start_time 和 end_time 启用日期过滤器,并修改 change_list.html 模板以提供正确的查询字符串,例如进行中的期间:

<li><a href="?start_time_lte=[now]&end_time_gt=[now]">In Progress</a>

我的问题是,有什么方法可以为 [now] 提供一些在运行 QuerySet 时在服务器端进行评估的东西?我知道您可以将可调用对象传递给 QuerySet 过滤器,但似乎该功能不适用于 FilterSpecs。我讨厌必须将日期时间字符串填充到查询字符串中,因为我知道我的管理员会为过滤后的链接添加书签并且会感到困惑。

【问题讨论】:

    标签: django django-admin django-1.2


    【解决方案1】:

    你会想要使用新的list_filter feature,因为这样的黑客攻击更少。

    如果你被 Django 1.2 卡住了,我帮不了你。

    【讨论】:

    • 老鼠们,我确实卡在 1.2 上了。这正是我所需要的,所以很高兴知道。谢谢!
    • 如果你真的卡住了,你可以尝试找到 list_filter 功能的补丁并将其应用到你的 1.2 副本。希望补丁不是另一个更大的补丁的一部分,并且不会破坏任何其他功能。
    猜你喜欢
    • 2012-06-29
    • 2010-10-15
    • 2020-03-08
    • 2014-09-24
    • 2018-12-30
    • 1970-01-01
    • 2012-10-18
    • 2012-05-11
    • 2020-01-01
    相关资源
    最近更新 更多