默认
Django
后台管理页面无法看出标题,需要进行一定的配置。在修改模型(增加、删除字段)时,需要设置默认值,而且需要更新数据库使应用生效。
一、定制后台页面
- 修改
article models.py
文件
from django.db import models
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length=40)
content = models.TextField()
def __str__(self):
return "<Article:%s>" % self.title
启动服务python manage.py runserver
,访问localhost:8000/admin
,输入账号密码。
要让内容显示出来,不建议在models.py
文件中进行修改,而是应该在admin.py
文件中进行修改。
- 修改
article admin.py
文件
from django.contrib import admin
from .models import Article
# Register your models here.
class ArticleAdmin(admin.ModelAdmin):
# 显示字段
list_display = ("id", "title", "content")
admin.site.register(Article, ArticleAdmin)
重新启动服务,进入后台页面。
调整显示顺序
修改article admin.py
文件
from django.contrib import admin
from .models import Article
# Register your models here.
class ArticleAdmin(admin.ModelAdmin):
list_display = ("id", "title", "content")
# 正序排列,如果需要按相反顺序,在前面加-号,如ordering = ("-id", )
ordering = ("id", "title", "content")
admin.site.register(Article, ArticleAdmin)
- 另外一种注册的方式
修改article admin.py
文件
from django.contrib import admin
from .models import Article
# Register your models here.
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
list_display = ("id", "title", "content")
ordering = ("id", "title", "content")
保存刷新,结果一样。
二、修改模型
修改article models.py
文件
from django.db import models
#from django.utils import timezone
from django.contrib.auth.models import User
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length=40)
content = models.TextField()
#created_time = models.DateTimeField(default=timezone.now)
created_time = models.DateTimeField(auto_now_add=True)
last_updated_time = models.DateTimeField(auto_now=True)
author = models.ForeignKey(User, on_delete='models.DO_NOTHING', default=1)
is_deleted = models.BooleanField(default=False)
readed_num = models.IntegerField(default=0)
def __str__(self):
return "<Article:%s>" % self.title
修改article admin.py
文件
from django.contrib import admin
from .models import Article
# Register your models here.
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
list_display = ("id", "title", "author", "content", "is_deleted", "created_time", "last_updated_time")
ordering = ("id", )
#admin.site.register(Article,ArticleAdmin)
执行数据库迁移及迁移应用操作,重启服务
标识is_deleted
用法:被标识为删除的文章并没有实际删除,可以通过修改views.py
文件来过滤显示,让127.0.0.1:8000/article
只显示未被标记删除的文章列表。
- 修改
views.py
文件
from django.shortcuts import render,get_object_or_404,render_to_response
from django.http import HttpResponse,Http404
from .models import Article
# Create your views here.
def article_detail(request, article_id):
#article = Article.objects.get(id=article_id)
article = get_object_or_404(Article,pk=article_id)
context = {}
context['article_obj'] = article
return render_to_response('article_detail.html', context)
def article_list(request):
# 使用Article.objects.filter()来进行过滤
article_list = Article.objects.filter(is_deleted=False)
context = {}
context['article_list_obj'] = article_list
return render_to_response('article_list.html', context)
重新执行迁移,重启服务,可以看到标记为删除的文章标题未显示出来。