Python Django,后台管理,Admin站点,模型管理类配置

参考学习:https://blog.csdn.net/houyanhua1/article/details/84932773

 

应用名/models.py(定义模型类):

from django.db import models

# 定义模型类
class AreaInfo(models.Model):
    '''地区模型类'''
    # 地区名称
    atitle = models.CharField(verbose_name='标题', max_length=20)  # verbose_name指定后台管理页面中,显示的列名。(默认显示Atitle)
    # 自关联属性
    aParent = models.ForeignKey('self', null=True, blank=True)

    def __str__(self):
        return self.atitle

    # 后台管理页面中,实例方法的返回值也可以当做实例属性对待。
    def title(self):
        return self.atitle
    title.admin_order_field = 'atitle'  # 指定title实例方法返回值的排序依据。(根据atitle属性值进行排序)
    title.short_description = '地区名称'  # 指定后台管理页面中,显示的列名。(默认显示Title)

    def parent(self):
        if self.aParent is None:
            return ''
        return self.aParent.atitle

    parent.short_description = '父级地区名称'

应用名/admin.py(注册模型类,配置模型管理类):

from django.contrib import admin
from booktest.models import AreaInfo,PicTest

# 编辑页。一对多中,一方查看对应的所有多方。 (块方式查看)
class AreaStackedInline(admin.StackedInline):
    # 写多类的类名
    model = AreaInfo
    extra = 2  # 多方最后的可编辑的空行数(用于添加对应的多方,默认3)。

# 编辑页。一对多中,一方查看对应的所有多方。 (表格方式查看)
class AreaTabularInline(admin.TabularInline):
    model = AreaInfo
    extra = 2


# 模型管理类
class AreaInfoAdmin(admin.ModelAdmin):
    '''地区模型管理类'''
    list_per_page = 10  # 指定每页显示10条数据
    list_display = ['id', 'atitle', 'title', 'parent']  # 设置显示哪几列。列表中可以是实例属性,也可以是模型的实例方法名。 
    actions_on_bottom = True   # 在列表底部也显示操作动作的下拉框。 (默认只在列表顶部显示)
    actions_on_top = False   # 在列表顶部不显示操作动作的下拉框。
    list_filter = ['atitle']  # 列表页右侧过滤栏(根据atitle过滤)
    search_fields = ['atitle']  # 列表页上方的搜索框(根据atitle搜索)

    # fields = ['aParent', 'atitle']   # 编辑页中显示的字段,以及字段的顺序。
    fieldsets = (
        ('基本', {'fields':['atitle']}),  # 编辑页中显示的字段进行分组。 (基本组)
        ('高级', {'fields':['aParent']})  # (高级组)
    )

    # inlines在一对多的一方中配置。
    # inlines = [AreaStackedInline]   # 编辑页中,一对多关系,查看一方对应所有的多方。 (查看省下的所有市)
    inlines = [AreaStackedInline]   # AreaStackedInline表示块的方式查看;AreaStackedInline表示表格的方式查看。


# 注册模型类
admin.site.register(AreaInfo, AreaInfoAdmin)  # 通过参数指定对应的模型管理类。 也可以通过管理类的装饰器指定(@admin.register(AreaInfo))。
admin.site.register(PicTest)

重写后台管理也的模板。

后台管理页的页面模板的路径如下:

/home/用户名/.virtualenvs/py_django/lib/python3.5/site-packages/django/contrib/admin/templates/admin

将路径下的对应模板,例如:base_site.html,拷贝到 应用名/templates/admin/base_site.html,并自定义修改模板。

利用模板的加载顺序(查找顺序),会优先从应用中查找对应的模板,找到后就不会去默认目录下找模板。

 

你可能感兴趣的:(Python+)