蓝鲸Django: 搜索和分页功能的实现
来自CloudWiki
Admin 定制化
当前admin 界面只能新建数据或修改、删除数据。Admin 界面作为django 原生提供的功能, 有很强的扩展性。
显示更多字段
在 moments/admin.py 中,
写一个 admin.ModelAdmin 的子类,添加 list_display 属性, 并在注册时将该子类作为参数传入:
from django.contrib import admin from .models import WeChatUser, Status, Reply # Register your models here. class StatusAdmin(admin.ModelAdmin): list_display = ['user','text', 'pub_time', 'pics'] admin.site.register(WeChatUser) admin.site.register(Status,StatusAdmin) admin.site.register(Reply)
添加搜索功能
面对众多的数据,数据的搜索功能是很重要。可以给 StatusAdmin 添加一个 search_fields属性:
from django.contrib import admin from .models import WeChatUser, Status, Reply # Register your models here. class StatusAdmin(admin.ModelAdmin): list_display = ['user','text', 'pub_time', 'pics'] search_fields = ['text', 'pics','user__user__username'] admin.site.register(WeChatUser) admin.site.register(Status,StatusAdmin) admin.site.register(Reply)
添加时间筛选
对于像 Status 这种表里面的数据,有日期的字段,可以给 StatusAdmin 添加date_hierarchy 属性:
即可在 Admin 界面中通过时间对数据进行筛选
from django.contrib import admin from .models import WeChatUser, Status, Reply # Register your models here. class StatusAdmin(admin.ModelAdmin): list_display = ['user','text', 'pub_time', 'pics'] search_fields = ['text', 'pics','user__user__username'] date_hierarchy = "pub_time" admin.site.register(WeChatUser) admin.site.register(Status,StatusAdmin) admin.site.register(Reply)
数据筛选功能
可以通过list_filter 功能添加筛选栏。注意 user user 的用法,可以对外键进行级联使用。
from django.contrib import admin from .models import WeChatUser, Status, Reply # Register your models here. class StatusAdmin(admin.ModelAdmin): list_display = ['user','text', 'pub_time', 'pics'] search_fields = ['text', 'pics','user__user__username'] date_hierarchy = "pub_time" list_filter = ['pics',"user"] admin.site.register(WeChatUser) admin.site.register(Status,StatusAdmin) admin.site.register(Reply)