一、设置模型和定制admin
修改在应用article中的models.py和admin.py,
#admin.py文件如下:
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length=30)
content = models.TextField()
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
#models.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", "author", "is_deleted", "created_time", "last_updated_time")
ordering = ('-id',)
#admin.site.register(Article, ArticleAdmin)
#article/views.py文件如下,其中filter函数起着过滤器的作用,
from django.shortcuts import render, render_to_response, get_object_or_404
from .models import Article
# Create your views here.
def article_detail(request, 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):
articles = Article.objects.filter(is_deleted=False)
context = {}
context['articles'] = articles
return render_to_response("article_list.html", context)
django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。
比如我数据库里有一条记录,记录的name的值是Python的话,我用student = Student.objects.filter(name=‘python’)
它返回的student是一个对象的列表,可以看的出来student[0]和上面的get方式返回的student的结果是一样的。
二、修改模型和修改数据库
执行以下三条命令,进行数据库的迁移更新
python manage.py makemigrations
python manage.py migrate
puthon manage.py runserver
python manage.py makemigrations 这个命令是记录我们对models.py的所有改动,并且将这个改动迁移到migrations这个文件下生成一个文件例如:0001文件,如果你接下来还要进行改动的话可能生成就是另外一个文件不一定都是0001文件,但是这个命令并没有作用到数据库
python manage.py migrate 这条命令的主要作用就是把这些改动作用到数据库也就是执行migrations里面新改动的迁移文件更新数据库,比如创建数据表,或者增加字段属性
(需要注意的是这两个命令默认情况下是作用于全局)
三、结果展示
在http://127.0.0.1:8000/admin/article/article/中,显示如下
注:如果需要后台显示中文,需要在settings中修改 LANGUAGE_CODE 为 'zh-Hans'。