共计 2203 个字符,预计需要花费 6 分钟才能阅读完成。
Django 后盾欠缺
列表页展现内容批改
在上一篇博客实现了列表数据展现,然而只显示了一列,并且列题目为英文,本篇博客首先解决该问题。
批改 blog
文件夹外部的 admin.py
文件,代码如下:
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
代码中的内容,要对应好,否则会呈现下述相似谬误:
NameError: name 'creatr_time' is not defined
执行保留代码,Django 会主动进行加载,刷新浏览器即可看到成果。
代码保留即从新加载输出数据如下:
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
中的内容:
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
:
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
# list_display 用于设置列表页展现哪些字段
list_display = ["title","introduction","content","creatr_time"]
search_fields = ["title"]
运行代码,效果图如下:
列表搜寻实现
实现列表检索,须要减少的代码也非常简单,在 admin.py
中的类 BlogAdmin
中减少如下代码:
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
# list_display 用于设置列表页展现哪些字段
list_display = ["title","content","creatr_time"]
# 减少搜寻字段
search_fields = ["title"]
只读字段
在 Django 中,能够设置某些字段不被批改,只读。例如,咱们将公布工夫设置为只读字段。
批改 admin.py
文件中的代码:
@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 技巧,这些都留给前面的文章吧。
正文完