Django框架-3

news2024/11/14 15:11:11

使用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)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/697942.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新闻丨INDEMIND荣获2023年北京市朝阳区创新型中小型企业认定

近日,北京市朝阳区科学技术和信息化局公布了“朝阳区2023年度第五批创新型中小企业名单”,INDEMIND凭借专业研发和创新能力等优势,成功入选。 创新型中小企业名单依据工业和信息化部2022年6月发布《优质中小企业梯度培育管理暂行办法》&#…

Golang每日一练(leetDay0111) 摆动排序II\I Wiggle Sort

目录 324. 摆动排序 II Wiggle Sort ii 🌟🌟 280. 摆动排序 I Wiggle Sort i 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每…

威胁建模之绘制数据流图

0x00 前言 1、什么是威胁建模: 以结构化的方式思考、记录并讨论系统存在的安全威胁,并针对这些威胁制定相应的消减措施。 2、为什么要威胁建模: (1)在设计阶段开展威胁建模,一方面可以更全面的发现系统存…

数据结构--静态链表

数据结构–静态链表 单链表 VS 静态链表 单链表:各个结点在内存中星罗棋布、散落天涯。 静态链表:分配一整片连续的内存空间,各个结点集中安置。 代码定义 代码一: #define MaxSize 10 //静态链表的最大长度 typedef struct //静态链表结构类型的定…

无限容量分布式文件存储解决方案

常见分布式文件系统 常见分布式文件系统比较 常见的分布式文件系统有GFS、HDFS 、Ceph 、GridFS 、TFS、FastDFS等。各自适用于不同的领域。 类 Google FS 都支持文件冗余备份,例如 Google FS、TFS 的备份数是 3。一个文件存储到哪几个存储结点,通常采…

《计算机系统与网络安全》第一章 计算机系统与网络安全概述

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

java的注解方式和xml方式这两种方式对数据库进行操作详解

首先需要引入mybatisplus包 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.1</version> </dependency>第一种注解方式&#xff1a;参数是通过#{}来接收的 p…

腾讯云服务-云点播:删除腾讯云点播录制的视频文件(保存在腾讯云是需要收费的)

文档地址&#xff1a;登录 - 腾讯云https://console.cloud.tencent.com/api/explorer?Productvod&Version2018-07-17&ActionDeleteMedia 使用python后端删除&#xff1a; import json from tencentcloud.common import credential from tencentcloud.common.profile…

kafka入门,数据有序、数据乱序(十)

数据有序 数据乱序 max.in.flight.requests.per.connection指定了生产者在接收到服务器相应之前可以发送多个消息。 kafka在1.x版本之前保证单分区有序&#xff0c;条件如下 max.in.flight.requests.per.connection1 2) kafka在1.x及以后版本保证数据单区间分区有序&#xff0…

vue 函数式(编程式) render (functional:true)

文章目录 一、文档二、区别三、使用h函数的参数解释&#xff1a;参数一&#xff1a;使用导入的组件名 参数二&#xff1a;绑定css绑定事件往组件里面传递参数动态绑定值props动态绑定值datafunctional:true到底是做什么的&#xff1f;动态绑定props 非functional:true版本 参数…

JSONUtil.toJsonStr 时间变成了时间戳

问题描述 我的接口是以Date来接收日期的&#xff0c;然后我在拿到这个对象参数后&#xff0c;通过hutool当中的JSONUtil.toJsonStr将其序列化成json字符串&#xff0c;然后存储到数据库。然后存储到数据库当中发现这个字段是时间戳。 DateTimeFormat和JsonFormat 前者是控制 请…

动态规划详解Python

动态规划 动态规划&#xff08;Dynamic Programming&#xff09;是一种用于解决复杂问题的算法设计方法。它通常用于优化问题&#xff0c;其中问题可以被分解成一系列重叠子问题&#xff0c;通过存储并重复使用已经解决过的子问题的解&#xff0c;可以避免重复计算&#xff0c…

区块链的简单认识

比特币作为区块链的应用&#xff0c;让区块链广为人知&#xff0c;如果比特币作为第一代区块链&#xff0c;则以太坊则称为第二代区块链。我们知道&#xff0c;区块链的最主要目的就是去中心化&#xff0c;比特币则成为了decentralized currency&#xff0c;去中心化在技术上依…

跨注册中心服务同步实践

博主介绍&#xff1a;✌全网粉丝4W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战、定制、远程&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面…

助你丝滑过度到 Vue3 创建工程 ②③

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; VUE3~TS &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &#x1f449;…

同城跑腿独立版小程序 码科跑腿小程序 支持用户端 骑手端

是独立版哦&#xff0c;不是微擎的 搭建有点复杂&#xff0c;只要一步错就会导致骑手端来单没有声音提示. 多的也不介绍了&#xff0c;不知道的朋友可以百度一下码科跑腿就知道了&#xff01;

机器学习李宏毅学习笔记33

文章目录 前言一、神经网络压缩二、Network pruning----一种network compression技术1.移除不同单位的区别2.大乐透假说 总结 前言 神经网络压缩&#xff08;一&#xff09; 类神经网络剪枝&#xff08;pruning&#xff09; 一、神经网络压缩 简化模型&#xff0c;用比较少的…

netty_客户端和服务端,定长数据输出案例

步骤1&#xff1a;创建server import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channe…

美团小游戏守卫羊村玩法介绍和游戏漏洞

序言 这款游戏是一个解压小游戏&#xff0c;是我在闲暇时发现的&#xff0c;然后就使用它来度过无聊的碎片化时间。这是一款传统的塔防类游戏&#xff0c;建议大家可以试试&#xff0c;玩法有很多种&#xff0c;当然它的游戏优化还是不太行&#xff0c;建议多优化优化。 玩法…

十二、Jenkins构建完成发送飞书消息通知

十二、Jenkins构建完成发送飞书消息通知 1. 创建一个飞书webhook 群机器人 得到一个飞书webhook地址&#xff1a; https://open.feishu.cn/open-apis/bot/v2/hook/2d0b6357-333a-4077-9fcd-61e361a3e51e 2. send_notice.py上传到jenkins服务器目录 send_notice.py最后面 代码…