django-blog(五)admin后台配置

以文章模型为例:

文章模型的定义为:

 文章模型:(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 是一个以二元元组为元素的列表, 每一个二元元组代表一个在管理表单的 <fieldset><fieldset> 是表单的一部分.)

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

猜你喜欢

转载自886.iteye.com/blog/2335619
今日推荐