前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django 做个小后台,细节在完善一点点【附源码】

Django 做个小后台,细节在完善一点点【附源码】

原创
作者头像
程序员迪迪
发布2022-01-04 16:08:30
4020
发布2022-01-04 16:08:30
举报

Django 后台完善

列表页展示内容修改

在上一篇博客实现了列表数据展示,但是只显示了一列,并且列标题为英文,本篇博客首先解决该问题。

修改 blog 文件夹内部的 admin.py 文件,代码如下:

代码语言:txt
复制
from django.contrib import admin
from blog.models import Blog

# Register your models here.
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
    # list_display  用于设置列表页展示哪些字段
    list_display = ["title","content","creatr_time"]

list_display 属性值对应的列表项,都是 models.py 代码中的内容,要对应好,否则会出现下述类似错误:

代码语言:txt
复制
NameError: name 'creatr_time' is not defined

执行保存代码,Django 会自动进行加载,刷新浏览器即可看到效果。

代码保存即重新加载输入数据如下:

代码语言:txt
复制
D:\blog\admin.py changed, reloading.
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
March 25, 2021 - 12:04:53

列表自定义列实现

除了 models.py 中定义的属性,可以在 list_display 进行调用,还可以自行创建列供其使用。

先修改 models.py 中的内容:

代码语言:txt
复制
from django.db import models

# Create your models here.
class Blog(models.Model):
    title = models.CharField("标题", max_length=100)
    content = models.TextField("内容")
    creatr_time = models.DateField("发布时间")

    def __str__(self):
        return self.title

    def introduction(self):
        return self.content[0:18]+"..."

    introduction.short_description = "内容简介"

同步修改 admin.py 中的内容,在 list_display 中新增 introduction

代码语言:txt
复制
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
    # list_display  用于设置列表页展示哪些字段
    list_display = ["title","introduction","content","creatr_time"]
    search_fields = ["title"]

运行代码,效果图如下:

列表搜索实现

实现列表检索,需要增加的代码也非常简单,在 admin.py 中的类 BlogAdmin 中增加如下代码:

代码语言:txt
复制
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
    # list_display  用于设置列表页展示哪些字段
    list_display = ["title","content","creatr_time"]
    # 增加搜索字段
    search_fields = ["title"]

只读字段

在 Django 中,可以设置某些字段不被修改,只读。例如,我们将发布时间设置为只读字段。

修改 admin.py 文件中的代码:

代码语言:txt
复制
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
    # list_display  用于设置列表页展示哪些字段
    list_display = ["title","introduction","content","creatr_time"]
    search_fields = ["title"]
    readonly_fields = ["title"]

ModelAdmin 常用的属性和方法

本篇博客主要介绍的是 BlogAdmin(admin.ModelAdmin) 这个类,该类继承自 ModelAdmin

常见的属性如下

  • list_display:列表显示字段筛选;
  • search_fields:搜索字段筛选;
  • readonly_fields:设置只读字段;
  • ordering:排序字段;
  • fields:表单页显示字段;
  • exclude:表单页不显示字段;
  • list_filter:边栏筛选;
  • list_editable:列表页可编辑字段设置;
  • list_per_page:列表页显示条数;
  • empty_value_display:空数据替换文字。

常见的方法如下

  • save_model():保存;
  • delete_model():删除;
  • get_search_results():自定义检索;
  • get_list_display():对 list_display 属性的扩展;
  • get_readonly_fields():对 readonly_fields 属性的扩展;
  • get_search_fields():对 search_fields 属性的扩展;

上述属性和方法都会在后续的博客中进行学习,除了以上内容外,Django 还有更多的 QuerySet 技巧,这些都留给后面的文章吧。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Django 后台完善
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档