django shell
django的交互式命令行程序。命令行中:python manage.py shell,然后
from blog.modelsimport Article
Article.object.all()
可以查看数据库的内容
也可以用来调试、测试未知方法。比如Article.object.all().values()不知道干嘛用,输入到shell里会显示出一个字典,,包含着所有变量和值。
admin加强
admin的功能很强大,再学两个。第一个是在标题后边再加一栏显示文章内容或其他字段。修改admin.py:
from django.contrib import admin
from blog.models import Article
# Register your models here.
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title','content')
admin.site.register(Article,ArticleAdmin)
其中list_display里的是显示的字段支持list和tuple(tuple只有1个元素也需要写逗号),需要为字符串,而且与models里的Article类保持一致。现在再来添加个更新日期,需要在Article类里新增这个字段。models.py里:
from django.db import models
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length=32,default='Title')
#此处max_length=32为必须输入的参数
content= models.TextField(null=True)
#CharField和TextField被称为字段。CharField一般用来做标题,TextField一般用来做文章内容。
#其他字段和参数可去django官方文档中看
pub_time = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
每次更改models.py都需要shell里数据迁移。
python manage.py makemigrations
python manage.py migrate
新增了 pub_time = models.DateTimeField(auto_now=True)字段
如果想要在admin里修改它,则 pub_time = models.DateTimeField(null=True)
还有个功能,admin过滤器,admin.py:
from django.contrib import admin
from blog.models import Article
# Register your models here.
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title','content','pub_time')
list_filter = ('pub_time',)
admin.site.register(Article,ArticleAdmin)
这样admin里能按日期筛选文章了。