1. 程式人生 > 程式設計 >django admin管理工具自定義時間區間篩選器DateRangeFilter介紹

django admin管理工具自定義時間區間篩選器DateRangeFilter介紹

django admin管理工具有很多好用的功能,例如搜尋框、篩選器等,編碼簡單,功能強大。

但是常規的時間篩選有一定侷限性,只能顯示一定時間節點到當前時間這一段時間段內的篩選結果,做不到自由定義時間段篩選,本人找到了可以實現這一功能的外掛,就是今天要介紹的DateRangeFilter。

注意: DateRangeFilter只適用於Django 1.4以上的版本。

外掛安裝

使用 pip或easy_install:

pip install django-daterange-filter

修改配置

在settings.py中的INSTALLED_APPS如下加入配置項:

INSTALLED_APPS = (
  ...
  'daterange_filter'
)

加入篩選器

假設你需要普通篩選和通過時間區間進行篩序的欄位在models.py裡分別是這麼寫的:

class TaskModel(models.Model):
  ...
  user_name = models.CharField(u'使用者名稱',max_length=128)
  submit_time = models.DateTimeField(u'提交時間',auto_now_add=True)
  ...

那麼,在admin.py引入篩選器外掛:

from daterange_filter.filter import DateRangeFilter

以上這點是文件中最容易被忽視的部分,所以這裡單獨列出來以引起重視。

admin.py中涉及到的DateRangeFilter篩選器完整的部分應該這麼寫:

from daterange_filter.filter import DateRangeFilter
from django.contrib import admin
from models import TaskModel

class TaskAdmin(admin.ModelAdmin):
  list_filter = (
    'user_name',('submit_time',DateRangeFilter),# this is a tuple
    ...
  )

在admin頁面上註冊後就可以看到效果了。

django admin管理工具自定義時間區間篩選器DateRangeFilter介紹

參考連結:https://pypi.org/project/django-daterange-filter/1.1.1/

補充知識:python django orm 過濾 時間,數字比較方法

首先我們來現說一下富比較方法在實際工作中的運用場景,小編一般運用比較多的是時間的比較,數字比較,只要能比較的地方都可以用 如果說 我要建立一條資訊,但是如果時間重疊 或者衝突就不能建立成功,

filter(
      (Q(start_time1__lt=start_time2) & Q(end_time1__gt=end_time2)) |
      Q(start_time1__range=(start_time,end_time)) |
      Q(end_time1__range=(start_time,end_time)))

來說上面的程式碼,__lt 是小於的意思 start_time1 小於 start_time2 & 並且 end_time1 大於 end_time2 __gt 是大於

‘|'是或者的意思 __range 給出一個時間範圍 在一個範圍之內 在start_time,到end_time 這個範圍之間

以上這篇django admin管理工具自定義時間區間篩選器DateRangeFilter介紹就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。