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='父级地区(方法列)'