You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django Admin面板实现逾期15天未归还借阅记录过滤?

在Django Admin中实现逾期未归还借阅记录的筛选逻辑

要在Django Admin面板中实现你需要的逾期筛选逻辑,最直接的方式是自定义Admin筛选器,具体步骤如下:

1. 导入必要模块

在你的admin.py文件开头,导入所需的模块:

from django.contrib import admin
from django.utils import timezone
from datetime import timedelta
from .models import Borrowing  # 替换为你的Borrowing模型路径

2. 创建自定义筛选器类

继承admin.SimpleListFilter,实现筛选逻辑和显示选项:

class LateBorrowingFilter(admin.SimpleListFilter):
    # 筛选器在Admin侧边栏显示的标题
    title = '逾期状态'
    # 用于URL参数的标识名
    parameter_name = 'is_late'

    def lookups(self, request, model_admin):
        # 返回筛选选项,格式为(参数值, 显示文本)
        return (
            ('late', '逾期未归还'),
            ('on_time', '正常借阅'),
        )

    def queryset(self, request, queryset):
        # 根据选中的选项应用筛选逻辑
        if self.value() == 'late':
            return queryset.filter(
                returned=False,
                borrow_date__lte=timezone.now().date() - timedelta(days=15)
            )
        if self.value() == 'on_time':
            # 可选:添加正常借阅的筛选逻辑
            return queryset.filter(
                returned=False,
                borrow_date__gt=timezone.now().date() - timedelta(days=15)
            )
        # 默认返回全部记录
        return queryset

3. 将筛选器绑定到Borrowing的Admin类

注册Borrowing模型时,把自定义筛选器加入list_filter:

@admin.register(Borrowing)
class BorrowingAdmin(admin.ModelAdmin):
    # 根据你的模型实际字段调整显示列
    list_display = ('id', 'borrower', 'borrow_date', 'returned')
    # 添加自定义筛选器到侧边栏
    list_filter = (LateBorrowingFilter, 'returned')

说明

  • 完成配置后,刷新Django Admin页面,Borrowing列表的侧边栏会出现“逾期状态”筛选器,选择“逾期未归还”即可自动筛选出符合条件的记录。
  • 建议使用timezone.now()替代原生datetime.now(),避免Django时区配置导致的日期计算偏差。

内容的提问来源于stack exchange,提问作者Abdelmasieh Baselious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:20:04