【问题标题】:Django admin, filter by timestamp rangeDjango admin,按时间戳范围过滤
【发布时间】:2017-08-05 19:09:32
【问题描述】:

我有一个具有这些属性的模型:

class MyModel(models.Model):
    name = models.CharField(max_length=250, blank=False, null=False)
    timestamp = models.BigIntegerField(default=0)

    def save(self, *args, **kwargs):
        self.timestamp = get_timestamp_in_milli()
        super(MyModel, self).save(*args, **kwargs)

在我的admin.py 中,我已经用这个模型声明了 AdminModel:

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    pass

是否有任何日历之类的过滤器,我可以在其中过滤时间戳范围?如果是,如何包含它?

我知道还有基于DateField的过滤器,是否可以将时间戳过滤为DateFiled?

【问题讨论】:

  • 既然有TimeField,为什么还要使用BigIntegerField作为时间戳?
  • TimeField 的默认小部件是 TimeInput,也许这就是您要找的东西?
  • @AshishNitinPatil 只能说我无法决定我可以使用什么样的字段:)
  • 嗯,我想你应该仍然可以使用TimeInput 作为小部件。
  • @AshishNitinPatil 你能提供例子吗?我只是 django 的新手。

标签: python django


【解决方案1】:

我认为您应该从客户端以正常方式(即<input type="date" name="timestamp__lte"> <input type="date" name="timestamp__gte">)获取该日期范围(旁注:__range=[timestamp__lte, timestamp__gte]),然后在服务器中进行转换。 Here's a good post.

【讨论】:

  • 我需要在哪里编写这部分代码?我只是 django 的新手。
  • __range 是 QuerySet API 的一部分。只是一个过滤器,就像你做name__icontains="something"一样。它们是可以在字段中使用的“神奇”过滤器(取决于它们的类型)。 <input>s 需要通过表单提交,然后您将执行类似 MyModel.objects.get(timestamp__range=[timestamp__lte, timestamp__gte]) 的操作,其中列表是来自 POST(或 GET)的变量。
猜你喜欢
  • 2022-08-14
  • 1970-01-01
  • 2013-05-24
  • 2013-11-26
  • 2014-07-22
  • 2010-12-12
  • 2020-09-19
  • 1970-01-01
  • 2011-03-03
相关资源
最近更新 更多