使用admin后台管理数据
创建模型类
模型类:应用中的models.py文件中
from django.db import models
# Create your models here.
# 模型类必须要继承models.Model
class doogs(models.Model):
# 属性
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
name = models.CharField(max_length=50, verbose_name='商品名')
price = models.DecimalField(max_digits=10, decimal_places=2,
verbose_name='价格')
stock = models.IntegerField(default=0, verbose_name='库存')
sales = models.IntegerField(default=0, verbose_name='销量')
注册模型类
注册模型类:应用中的admin.py文件
from django.contrib import admin
from doogs.models import doogs
# Register your models here.
admin.site.register(doogs)
然后重新运行项目
修改应用的显示名称
第一步,在应用中的_init_.py中
default_app_config = 'doogs.apps.DoogsConfig'
第二步,在应用中的apps.py中
from django.apps import AppConfig
class DoogsConfig(AppConfig):
name = 'doogs'
verbose_name = "商品管理"
修改模型显示的名称
在应用的models.py文件中
from django.db import models
# Create your models here.
# 模型类必须要继承models.Model
class doogs(models.Model):
class Meta:
verbose_name = '商品' # 模型名称(单数)
verbose_name_plural = verbose_name # 模型名称(复数)
# 属性
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
name = models.CharField(max_length=50, verbose_name='商品名')
price = models.DecimalField(max_digits=10, decimal_places=2,
verbose_name='价格')
stock = models.IntegerField(default=0, verbose_name='库存')
sales = models.IntegerField(default=0, verbose_name='销量')
增加商品信息
在应用的models.py文件中
from django.db import models
# Create your models here.
# 模型类必须要继承models.Model
class doogs(models.Model):
class Meta:
# 默认的表名,子应用名+模型类名
db_table = "tb_doogs"
verbose_name = '商品' # 模型名称(单数)
verbose_name_plural = verbose_name # 模型名称(复数)
# 属性
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
name = models.CharField(max_length=50, verbose_name='商品名')
price = models.DecimalField(max_digits=10, decimal_places=2,
verbose_name='价格')
stock = models.IntegerField(default=0, verbose_name='库存')
sales = models.IntegerField(default=0, verbose_name='销量')
(这里没有结束,需要进行数据库迁移才能够添加)
数据库迁移
python manage.py makemigrations
python manage.py migrate
之后再返回浏览器中进行添加,此刻就能添加成功
模型数据的增删改查
增删改查都是在管理后台进行
更改商品在后台的显示名
在应用中的models.py文件中
from django.db import models
# Create your models here.
# 模型类必须要继承models.Model
class doogs(models.Model):
# 更改管理后台商品显示名
def __str__(self):
return '%s:%s' % (self.id, self.name)
class Meta:
# 默认的表名,子应用名+模型类名
db_table = "tb_doogs"
verbose_name = '商品' # 模型名称(单数)
verbose_name_plural = verbose_name # 模型名称(复数)
# 属性
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
name = models.CharField(max_length=50, verbose_name='商品名')
price = models.DecimalField(max_digits=10, decimal_places=2,
verbose_name='价格')
stock = models.IntegerField(default=0, verbose_name='库存')
sales = models.IntegerField(default=0, verbose_name='销量')
定制商品列表页
常用的列表页选项有:
list_display选项
list_display选项用于控制页面展示的字段,该选项的值为元组或列表类型,其中的元素可以是模型字段或自定义字段
在应用的admin.py文件中
from django.contrib import admin
from doogs.models import doogs
# Register your models here.
class DoogsAdmin(admin.ModelAdmin):
# 字段显示列表
list_display = ('name', 'price', 'stock', 'sales', 'create_time','update_time')
# 注册模型类
admin.site.register(doogs,DoogsAdmin)
添加后显示的界面就会是这样
显示自定义字段
自定义字段指与模型相关,但并不包含在模型中的字段,这种字段是定义在应用的admin.py文件中的一些函数,这些函数会将模型实例作为参数
在应用的admin.py文件中
from django.contrib import admin
from doogs.models import doogs
# Register your models here.
def sales_volume(g):
total = g.price * g.sales
return f'{g.name}销售额为:{total}'
sales_volume.short_description = '商品销售额' # 设置字段描述
class DoogsAdmin(admin.ModelAdmin):
# 字段显示列表
list_display = ('name', 'price', 'stock', 'sales', 'create_time','update_time',sales_volume)
# 注册模型类
admin.site.register(doogs,DoogsAdmin)
list_display_links选项
用于设置需在页面中以链接形式展示的字段,可跳转到详情页面
在应用的admin.py文件中
from django.contrib import admin
from doogs.models import doogs
# Register your models here.
def sales_volume(g):
total = g.price * g.sales
return f'{g.name}销售额为:{total}'
sales_volume.short_description = '商品销售额' # 设置字段描述
class DoogsAdmin(admin.ModelAdmin):
# 字段显示列表
list_display = ('id','name', 'price', 'stock', 'sales', 'create_time','update_time',sales_volume)
# 设置链接字段
list_display_links = ('id','name')
# 注册模型类
admin.site.register(doogs,DoogsAdmin)
默认第一个显示字段有链接跳转,假如设置了list_display_links,则依据list_display_links指定的字段设置链接
list_filter选项
list_filter选项用于开启列表页过滤器,该选项可以接收模型中的字段作为过滤条件
在应用的admin.py文件中
from django.contrib import admin
from doogs.models import doogs
# Register your models here.
def sales_volume(g):
total = g.price * g.sales
return f'{g.name}销售额为:{total}'
sales_volume.short_description = '商品销售额' # 设置字段描述
class DoogsAdmin(admin.ModelAdmin):
# 字段显示列表
list_display = ('id','name', 'price', 'stock', 'sales', 'create_time','update_time',sales_volume)
# 设置链接字段
list_display_links = ('id','name')
# 设置过滤条件
list_filter = ['sales','name'] # 过滤器
# 注册模型类
admin.site.register(doogs,DoogsAdmin)
list_per_page选项
使用list_per_page选项可以设置每页显示的数据量
在应用的admin.py文件中
from django.contrib import admin
from doogs.models import doogs
# Register your models here.
def sales_volume(g):
total = g.price * g.sales
return f'{g.name}销售额为:{total}'
sales_volume.short_description = '商品销售额' # 设置字段描述
class DoogsAdmin(admin.ModelAdmin):
# 字段显示列表
list_display = ('id','name', 'price', 'stock', 'sales', 'create_time','update_time',sales_volume)
# 设置链接字段
list_display_links = ('id','name')
# 设置过滤条件
list_filter = ['sales','name'] # 过滤器
# 每页显示记录条数
list_per_page = 2
# 注册模型类
admin.site.register(doogs,DoogsAdmin)
list_editable选项
list_editable选项用于设置可编辑的字段,字段若被指定为编辑字段,页面上可直接编辑该字段。
在应用的admin.py文件中
from django.contrib import admin
from doogs.models import doogs
# Register your models here.
def sales_volume(g):
total = g.price * g.sales
return f'{g.name}销售额为:{total}'
sales_volume.short_description = '商品销售额' # 设置字段描述
class DoogsAdmin(admin.ModelAdmin):
# 字段显示列表
list_display = ('id','name', 'price', 'stock', 'sales', 'create_time','update_time',sales_volume)
# 设置链接字段
list_display_links = ('id','name')
# 设置过滤条件
list_filter = ['sales','name'] # 过滤器
# 每页显示记录条数
list_per_page = 2
# 设置可编辑字段
list_editable = ('price',)
# 注册模型类
admin.site.register(doogs,DoogsAdmin)
注意:一个字段不能同时作为链接和可更改字段
search_fields选项
search_fields选项用于配置搜索字段
在应用的admin.py文件中
from django.contrib import admin
from doogs.models import doogs
# Register your models here.
def sales_volume(g):
total = g.price * g.sales
return f'{g.name}销售额为:{total}'
sales_volume.short_description = '商品销售额' # 设置字段描述
class DoogsAdmin(admin.ModelAdmin):
# 字段显示列表
list_display = ('id','name', 'price', 'stock', 'sales', 'create_time','update_time',sales_volume)
# 设置链接字段
list_display_links = ('id','name')
# 设置过滤条件
list_filter = ['sales','name'] # 过滤器
# 每页显示记录条数
list_per_page = 2
# 设置可编辑字段
list_editable = ('price',)
# 搜索字段
search_fields = ('name', 'id') # 表示以name,id 作为搜索字段
# 注册模型类
admin.site.register(doogs,DoogsAdmin)
actions_on_bottom 选项
actions_on_bottom选项用于设置管理员动作是否在底部显示,默认为False,表示不在底部显
示,当设置为True表示在底部显示。
在应用的admin.py文件中
actions_on_bottom 选项
actions_on_bottom选项用于设置管理员动作是否在底部显示,默认为False,表示不在底部显
示,当设置为True表示在底部显示。
在应用的admin.py文件中
from django.contrib import admin
from doogs.models import doogs
# Register your models here.
def sales_volume(g):
total = g.price * g.sales
return f'{g.name}销售额为:{total}'
sales_volume.short_description = '商品销售额' # 设置字段描述
class DoogsAdmin(admin.ModelAdmin):
# 字段显示列表
list_display = ('id','name', 'price', 'stock', 'sales', 'create_time','update_time',sales_volume)
# 设置链接字段
list_display_links = ('id','name')
# 设置过滤条件
list_filter = ['sales','name'] # 过滤器
# 每页显示记录条数
list_per_page = 2
# 设置可编辑字段
list_editable = ('price',)
# 搜索字段
search_fields = ('name', 'id') # 表示以name,id 作为搜索字段
# 设置是否在顶部显示动作下拉框
actions_on_top = False
# 设置管理员动作是否在底部显示
actions_on_bottom = True
# 注册模型类
admin.site.register(doogs,DoogsAdmin)
定制编辑页选项
单击列表页面中的id等字段后,页面会跳转到相应记录的编辑页。通过编辑页选项可以控制在编辑页显示的字段、设置字段分组、将字段设置为只读等,这些选项在应用的admin.py文件的模型管理类中使用
fields选项
fields选项用于控制编辑页要显示的字段,它的值是元组类型
from django.contrib import admin
from doogs.models import doogs
# Register your models here.
def sales_volume(g):
total = g.price * g.sales
return f'{g.name}销售额为:{total}'
sales_volume.short_description = '商品销售额' # 设置字段描述
class DoogsAdmin(admin.ModelAdmin):
# 商品列表页
# 字段显示列表
list_display = ('id','name', 'price', 'stock', 'sales', 'create_time','update_time',sales_volume)
# 设置链接字段
list_display_links = ('id','name')
# 设置过滤条件
list_filter = ['sales','name'] # 过滤器
# 每页显示记录条数
list_per_page = 2
# 设置可编辑字段
list_editable = ('price',)
# 搜索字段
search_fields = ('name', 'id') # 表示以name,id 作为搜索字段
# 设置是否在顶部显示动作下拉框
actions_on_top = False
# 设置管理员动作是否在底部显示
actions_on_bottom = True
# 商品详情页
fields = ['name','price','stock']
# 注册模型类
admin.site.register(doogs,DoogsAdmin)
分组
from django.contrib import admin
from doogs.models import doogs
# Register your models here.
def sales_volume(g):
total = g.price * g.sales
return f'{g.name}销售额为:{total}'
sales_volume.short_description = '商品销售额' # 设置字段描述
class DoogsAdmin(admin.ModelAdmin):
# 商品列表页
# 字段显示列表
list_display = ('id','name', 'price', 'stock', 'sales', 'create_time','update_time',sales_volume)
# 设置链接字段
list_display_links = ('id','name')
# 设置过滤条件
list_filter = ['sales','name'] # 过滤器
# 每页显示记录条数
list_per_page = 2
# 设置可编辑字段
list_editable = ('price',)
# 搜索字段
search_fields = ('name', 'id') # 表示以name,id 作为搜索字段
# 设置是否在顶部显示动作下拉框
actions_on_top = False
# 设置管理员动作是否在底部显示
actions_on_bottom = True
# 商品详情页
# fields = ['name','price','stock']
# 商品编辑页分组
fields = (('name', 'price'), ('stock', 'sales'))
# 注册模型类
admin.site.register(doogs,DoogsAdmin)
fieldsets选项
fieldsets选项用于对可编辑字段进行分组,该选项不可与fields选项同时使用
from django.contrib import admin
from doogs.models import doogs
# Register your models here.
def sales_volume(g):
total = g.price * g.sales
return f'{g.name}销售额为:{total}'
sales_volume.short_description = '商品销售额' # 设置字段描述
class DoogsAdmin(admin.ModelAdmin):
# 商品列表页
# 字段显示列表
list_display = ('id','name', 'price', 'stock', 'sales', 'create_time','update_time',sales_volume)
# 设置链接字段
list_display_links = ('id','name')
# 设置过滤条件
list_filter = ['sales','name'] # 过滤器
# 每页显示记录条数
list_per_page = 2
# 设置可编辑字段
list_editable = ('price',)
# 搜索字段
search_fields = ('name', 'id') # 表示以name,id 作为搜索字段
# 设置是否在顶部显示动作下拉框
actions_on_top = False
# 设置管理员动作是否在底部显示
actions_on_bottom = True
# 商品详情页
# fields = ['name','price','stock']
# 商品编辑页分组
# fields = (('name', 'price'), ('stock', 'sales'))
# 编辑字段分组
fieldsets = (
('商品基本信息', {'fields': ['name', 'stock', 'sales']}),
('商品价格信息', {'fields': ['price']}))
# 注册模型类
admin.site.register(doogs,DoogsAdmin)
设置只读字段
from django.contrib import admin
from doogs.models import doogs
# Register your models here.
def sales_volume(g):
total = g.price * g.sales
return f'{g.name}销售额为:{total}'
sales_volume.short_description = '商品销售额' # 设置字段描述
class DoogsAdmin(admin.ModelAdmin):
# 商品列表页
# 字段显示列表
list_display = ('id','name', 'price', 'stock', 'sales', 'create_time','update_time',sales_volume)
# 设置链接字段
list_display_links = ('id','name')
# 设置过滤条件
list_filter = ['sales','name'] # 过滤器
# 每页显示记录条数
list_per_page = 2
# 设置可编辑字段
list_editable = ('price',)
# 搜索字段
search_fields = ('name', 'id') # 表示以name,id 作为搜索字段
# 设置是否在顶部显示动作下拉框
actions_on_top = False
# 设置管理员动作是否在底部显示
actions_on_bottom = True
# 商品详情页
# fields = ['name','price','stock']
# 商品编辑页分组
# fields = (('name', 'price'), ('stock', 'sales'))
# 编辑字段分组
fieldsets = (
('商品基本信息', {'fields': ['name', 'stock', 'sales']}),
('商品价格信息', {'fields': ['price']}))
# 设置只读字段
readonly_fields = ['name','stock']
# 注册模型类
admin.site.register(doogs,DoogsAdmin)