djago后台管理页面


from django.contrib import admin
from blogtest.models import *
#修改网页title和站点header。+
admin.site.site_title = "显示title"
admin.site.site_header = "显示抬头"


# 定认一个编辑页的子字段 要在模型管理类中加入一个inlines=[sitr]
class AreaStackedInline(admin.StackedInline):
    # 要写多类的名字
    model = AreaInfo
    # 下面新增的空行条数
    extra = 2


# admin.site.register(导入进来的模型类名,自定义的模型管理类)
# 写法一太麻烦 ,后台应用必须注册不然不显示
# class BlogText(admin.ModelAdmin):
#     # 指定每行显示的内容
#     list_display = [
#         "id",'atitle','aadd'
#     ]
# 注册模型类,必须在管理类后面,参数为(要显示的模型(类名),要显示的字段去哪个类中寻找)
# admin.site.register(导入进来的模型类名,自定义的模型管理类)
# admin.site.register(AreaInfo,BlogText)      # 不要忘记第二个参数

# 写法二
@admin.register(AreaInfo)
class AreaInfoadmin(admin.ModelAdmin):
    # 可以写模型类属性也可以写模型类方法但要有返回值
    list_display = (
        # ID  父级地区    子级地区   父级地区
        'id', 'atitle', 'aadd', 'show_atitle','aParent'
    )

    # 每页显示行数
    list_per_page = 10

    # 下方:下拉列表框
    actions_on_bottom = True
    # 上方:下拉列表框
    actions_on_top = True
    # 右侧过滤栏
    list_filter = ['atitle']
    # 列表页上方搜索框!!!!!!!!!!!!!!!!!!!!!跟拒哪一个字段搜索
    search_fields = ['atitle']
    # 显示编辑页的字段顺序+
    # fields = ['atitle','id']

    fieldsets = (
        ('基本',{'fields':['atitle']}),
        ('高级',{'fields':['aadd']})
    )

    # 在编辑页中显示子集
    inlines = [AreaStackedInline]

 

=================分割线=======================
# Project/models.py

class AreaInfo(models.Model):
    atitle = models.CharField(max_length=20,verbose_name='城市')
    aadd = models.ForeignKey('AreaInfo', on_delete=models.CASCADE, null=True,verbose_name='父级地区')

    # 指定后台字段名
    def __str__(self):
        return self.atitle

    # 可以写进list_display的方法
    def show_atitle(self):
        return self.atitle
    # 指定show_atitle方法 跟据哪个字段进行排序
    show_atitle.admin_order_field='atitle'
    # 指定行首的名称
    show_atitle.short_description = '地区名称(方法列)'

    # 在管理页面显示父级地区方法
    def aParent(self):
        # 如果有父级地区就返回没有就返回空
        if self.aadd is None:
            return ''
        else:
            return self.aadd
    aParent.short_description='父级地区(方法列)'

 

posted @ 2020-07-15 10:52  trysocket  阅读(216)  评论(0编辑  收藏  举报