以文章模型为例:
文章模型的定义为:
文章模型:(vim blog/models.py)
class Article(models.Model):
title = models.CharField(max_length=50, verbose_name='文章标题')
desc = models.CharField(max_length=50, verbose_name='文章描述')
content = models.TextField(verbose_name='文章内容')
click_count = models.IntegerField(default=0, verbose_name='点击次数')
is_recommend = models.BooleanField(default=False, verbose_name='是否推荐')
date_publish = models.DateTimeField(auto_now_add=True, verbose_name='发布时间')
user = models.ForeignKey(User, verbose_name='用户')
category = models.ForeignKey(Category, blank=True, null=True, verbose_name='分类')
tag = models.ManyToManyField(Tag, verbose_name='标签')
class Meta:
verbose_name = '文章'
verbose_name_plural = verbose_name
ordering = ['-date_publish']
def __unicode__(self):
return self.title
定义admin后台
vim blog/admin.py
如果你希望Article 模型在写文章时只包含'title','desc','content' 字段, 应该显式说明fields
、或使用exclude去除不想显示的项,像这样:
from models import *
class ActicleAdmin(admin.ModelAdmin):
fields=('title','desc','content')
admin.site.register(Article,ActicleAdmin)
这样在发表文章的时候只有标题,描述,和内容项目。
要在同一行显示多个字段, 就把那些字段打包在一个元组里。例子中, url 和 title 字段 会显示在同一行, content 字段将会显示在他们的下一行里:
class FlatPageAdmin(admin.ModelAdmin): fields = (('desc', 'title'), 'content')
另外,如果字段过多,可以使用fieldsets将不需要的隐藏折叠起来
class ActicleAdmin(admin.ModelAdmin):
fieldsets = (
(None, {
'fields': ('desc', 'title', 'content', 'category')
}),
('Advanced options', {#高级设置
'classes': ( 'collapse',),#折叠一下
'fields': ('click_count', 'is_recommend', 'user')
}),
)
admin.site.register(Article,ActicleAdmin)
fieldsets 是一个以二元元组为元素的列表, 每一个二元元组代表一个在管理表单的 ( 是表单的一部分.)
ModelAdmin.list_display¶
使用list_display 去控制哪些字段会显示在Admin 的修改列表页面中。
如
class UserAdmin(admin.ModelAdmin):
list_display=( 'username','qq','mobile')
admin.site.register(User,UserAdmin)
在列表页要显示的字段
ModelAdmin.list_display_links
加入后点击其他项也可以进入编辑界面
class UserAdmin(admin.ModelAdmin):
list_display=( 'username','qq','mobile')
list_display_links=( 'username','qq','mobile')
admin.site.register(User,UserAdmin)
ModelAdmin.list_editable
加入后可在列表界面直接编辑
class UserAdmin(admin.ModelAdmin):
list_display=( 'username','qq','mobile')
list_editable=( 'qq','mobile')
admin.site.register(User,UserAdmin)
ModelAdmin.list_filter¶
筛选功能,加入后在列表的右侧出现列表 点击即可筛选
class UserAdmin(admin.ModelAdmin):
list_display=( 'username','qq','mobile')
list_filter=( 'username','qq','mobile')
list_editable=( 'qq','mobile')
admin.site.register(User,UserAdmin)
http://python.usyiyi.cn/django/ref/contrib/admin/index.html