蓝鲸Django: 搜索和分页功能的实现

来自CloudWiki
跳转至: 导航搜索

Admin 定制化

当前admin 界面只能新建数据或修改、删除数据。Admin 界面作为django 原生提供的功能, 有很强的扩展性。

Bd20-6-1.png

显示更多字段

在 moments/admin.py 中,

写一个 admin.ModelAdmin 的子类,添加 list_display 属性, 并在注册时将该子类作为参数传入:

Bd20-6-2.png

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)

Bd20-6-3.png

添加搜索功能

面对众多的数据,数据的搜索功能是很重要。可以给 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)

Bd20-6-4.png

添加时间筛选

对于像 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)

Bd20-6-5.png

数据筛选功能

可以通过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)


Bd20-6-6.png