第二章(一):Django框架的模型(Model)

news2024/11/24 11:02:28

系列文章目录

备注:这里是Django系列文章的所有文章的目录
第一章(一) : Django框架如何创建项目、创建应用、创建templates;如何启动django项目;
第一章(二):Django框架的模式、路由、视图;
第一章(三):Django框架的视图函数、视图类的认识及常规使用;
第一章(四):Django框架的模板(DTL):变量、标签、模板过滤器、模板继承、配置模板文件(staticfiles)


备注:欢迎查阅python之Django框架,如有疑问,欢迎评论,一定回复!!!

文章目录

  • 系列文章目录
  • 前言
  • 一、Django模型的定义
    • 1.1 Model定义的示例
    • 2.1 Django模型的字段常用类型
    • 3.1 模型常用字段参数
      • 3.1.1 数值型字段 DecimalField 的参数
      • 3.1.2 时间日期类型字段: DatetimeField、DateField和TimeField 的参数
      • 3.1.3 常用字段参数
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


前言

提示:这里是本文要记录的大概内容:

模型(Model)是 MTV 模式的重要组成部分。在 Django 框架中,主要通过模型来实现与数据库的交互功能,如数据的增加、删除、修改和查询,以及多表关联等。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Django模型的定义

在Diango框架中,模型用于描述数据库表结构。模型实例可以实现数据操作。一个模型( Model)对应一个数据库表。模型中的字段对应数据库表中的一个字段
在定义好一个模型后,Django 会提供数据库访问的一整套 API,从而自动在数据库中生成相应的数据表,这样就不需要使用 SOL 脚本创建表,或者在数据库中手工创建表格了,大大提高了开发效率。

1.1 Model定义的示例

  1. 在app4/models.py文件中:
from django.db import models
# Create your models here.

class UserBaseInfo(models.Model):
    id = models.AutoField(verbose_name='编号', primary_key=True)
    username = models.CharField(verbose_name='用户名称', max_length=30)
    password = models.CharField(verbose_name='密码', max_length=20)
    status = models.CharField(verbose_name='状态', max_length=1)
    createdate = models.DateTimeField(verbose_name='创建日期', db_column='createDate')
    def __str__(self):
        return str(self.id)

    class Meta:
        verbose_name = '人员基本信息'
        db_table = 'UserBaseInfo4'

在上述代码中,定义了一个人员基本信息的模型,其中包括编号、用户名称、密码、状态等段。这些字段有整数类型、字符类型和日期类型。每个字段还包括名称、长度、是否主键等参数;

2.1 Django模型的字段常用类型

在这里插入图片描述

data_types = {
        "AutoField": "integer AUTO_INCREMENT",
        "BigAutoField": "bigint AUTO_INCREMENT",
        "BinaryField": "longblob",
        "BooleanField": "bool",
        "CharField": "varchar(%(max_length)s)",
        "DateField": "date",
        "DateTimeField": "datetime(6)",
        "DecimalField": "numeric(%(max_digits)s, %(decimal_places)s)",
        "DurationField": "bigint",
        "FileField": "varchar(%(max_length)s)",
        "FilePathField": "varchar(%(max_length)s)",
        "FloatField": "double precision",
        "IntegerField": "integer",
        "BigIntegerField": "bigint",
        "IPAddressField": "char(15)",
        "GenericIPAddressField": "char(39)",
        "JSONField": "json",
        "OneToOneField": "integer",
        "PositiveBigIntegerField": "bigint UNSIGNED",
        "PositiveIntegerField": "integer UNSIGNED",
        "PositiveSmallIntegerField": "smallint UNSIGNED",
        "SlugField": "varchar(%(max_length)s)",
        "SmallAutoField": "smallint AUTO_INCREMENT",
        "SmallIntegerField": "smallint",
        "TextField": "longtext",
        "TimeField": "time(6)",
        "UUIDField": "char(32)",
    }

3.1 模型常用字段参数

3.1.1 数值型字段 DecimalField 的参数

该类型字段表示:固定精度十进制数。具体语法如下:

models.DecimalField(max digits=None, decimal places=None)

其中参数如下:

  • maxdigits: 数字允许的最大位数
  • decimal_places:小数的最大位数

3.1.2 时间日期类型字段: DatetimeField、DateField和TimeField 的参数

  • 3个字段都有auto_now_add 和auto_now 参数
  • auto_now_add : 将时间类型字段的值设置为创建时的时间,后期不能再次修改,比如用户注册时间。该参数默认为 False。一旦设置为 True,则无法在程序中手动为字段赋值。
  • auto_now : 将时间类型字段设置为当前时间,比如用户登录时间、某条数据的最后修改时间。该参数默认为 False。一旦设置为 True,则无法在程序中手动为字段赋值。

如果要把时间类型字段设置为当前默认时间,并且还能在程序中进行修改,则使用如下代码:

from django.db import models
import django.utils.timezone as timezone
class User(models.Model):
	createDate = models.DateTimeField('创建日期',default = timezone.now)

3.1.3 常用字段参数

  • verbose_name : 设置字段的显示名称
  • primary_key : 设置字段为主键
  • editable :是否可以编辑,一般用于admin后台
  • max_length : 设置字段的最大长度
  • blank :若为True,则该字段允许为空值,在数据库中表现为空字符串。默认为False
  • null : 若为 True,则该字段允许为空值,在数据库中表现为null。默认为 False
  • default : 设置字段的默认值

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

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

相关文章

learn C++ NO.7——C/C++内存管理

引言 现在是5月30日的正午,图书馆里空空的,也许是大家都在午休,也许是现在37摄氏度的气温。穿着球衣的我已经汗流浃背,今天热火战胜了凯尔特人,闯入决赛。以下克上的勇气也激励着我,在省内垫底的大学中&am…

JS的异或运算XOR

概念 异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。 两个值相同时,返回false,否则返回true。也就是说,XOR可以用来判断两个值是否不同。 JavaScript 语言…

企业级信息系统开发——Spring Boot加载自定义配置文件

文章目录 一、使用PropertySource加载自定义配置文件(一)创建Spring Boot Web项目ConfigDemo01(二)创建自定义配置文件(三)创建自定义配置类(四)编写测试方法(五&#xf…

一键部署属于自己的ChatGPT-Next-Web

完整功能刚需: OpenAI 注册登录之后给的 api Key GitHub账号 Netlify账号 Tip: 注册 OepenAI账号 需要用国外手机号 这里建议去一些渠道购买账号 十块钱不到如果访问 OpenAI 的话 一定要挂欧美节点 否则禁止IP访问 概率会被封号为什么用 Netlify 托…

测试替身Test Doubles的5类型(Mockito)

测试替身Test Doubles的5类型(Mockito) 我们有一个名为 BankAccount 的类。 数据库用于存储和检索银行帐户信息。 我们想测试 BankAccount 中的逻辑,而不必担心它使用的底层数据库.由此类实现——它将 SQL 查询发送到数据库并返回其中包含的值。 测试替身Test Dou…

SuperMap iDesktopX扩展开发之GPA算子扩展

作者:dongyx SuperMap iDesktopX是超图研究院推出的一款跨平台的桌面GIS软件,兼容Windows和Linux,同时iDesktopX也采用的是插件式扩展开发框架,支持定制开发。 使用iDesktopX定制开发有以下优势: ⚫ 采用 Swing 图形界…

VM虚拟机仿真网络问题

在电子数据取证中,拿到一个镜像需要仿真的时候,经常会遇到网络问题。尤其是Linux服务器镜像,例如centos操作系统的镜像,一般镜像会有固定IP设置,仿真起来后,系统与本机不能建立连接,不能连接互联…

VSCode远程连接Ubuntu使用LLDB调试程序

VSCode已经具有远程开发的能力,可以使用SSH连接到Linux/MacOS进行远程开发,包括编译与调试,只需要安装Remote Development插件即可,如果想使用CMake管理项目,则需要将VSCode的CMake以及CMake Tools插件安装在远程机器上…

SpringBoot自定义打印横幅

众所周知,springboot项目启动的时候会打印横幅,横幅内容就是spring; 而spring boot提供了一个Banner接口用于处理启动横幅,默认情况下启动会打印如下信息 . ____ _ __ _ _/\\ / ____ __ _ _(_)_ __ __ _ \ \ \ \ ( (…

分布式系统

一.分布式理论基础 1.CAP理论 CAP定理是分布式系统中的重要理论,在一个分布式系统中最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的…

以太网驱动的流程浅析(五)-mii_bus初始化以及phy id的获取

【硬件环境】 Imx6ul 【Linux kernel版本】 Linux4.1.15 【以太网phy】 Realtek8201f 1.1. 以太网驱动probe流程 1.1 mii_bus初始化以及phy id的获取 然后进行mii的一些初始化fec_enet_mii_init(pdev); 主要是对struct mii_bus这里的成员进行初始化 并且会做注册mdiobus的…

小笔记-简单但够用系列_jupyter notebook 的重新安装问题

文章目录 目的目标步骤 目的 做程序开发时,想到 jupyter notebook 的浏览器交互式执行,决定再次启用放置许久的 jupyter notebook。 但太久没有执行的 jupyter notebook 在打开页面有一旦打开或创建新的 python,就自动报错退出。 使用过往经…

Blender UV展开流程

目录 1. UV1.1 blender默认物体1.2 创建物体1.3 UV参考图1.4 标记缝合边1.5 UV拉伸1.6 孤岛模式 1. UV 1.1 blender默认物体 默认物体已经自动生成UV 在UV编辑工作区,编辑模式,全选物体在左边自动展开UV 在物体数据属性-UV贴图-存在默认的UV贴图&#…

华为OD机试真题B卷 Java 实现【输入整型数组和排序标识,对其元素按照升序或降序进行排序】,附详细解题思路

一、题目描述 输入整型数组和排序标识,对其元素按照升序或降序进行排序 数据范围: 1≤n≤1000 ,元素大小满足 0≤val≤100000 。 二、输入描述 第一行输入数组元素个数;第二行输入待排序的数组,每个数用空格隔开;第三行输入一个整数0或1。0代表升序排序,1代表降序排序…

UOS桌面系统使用RLinux恢复数据

UOS桌面系统使用RLinux恢复数据 一、工具介绍二、注意事项三、准备四、制作live系统启动盘五、拷贝文件六、进入live系统一、工具介绍 R-Linux 是一款用于 Linux 和某些 Unixes 操作系统 Ext2/Ext3/Ext4 FS 文件系统的免费文件恢复实用工具。R-Linux 与 R-Studio 使用相同的 I…

如何使用ArcGIS进行选房分析

无论是城市规划布局研究,还是为自己找一个心仪的住房,都需要综合考虑购物、医疗、教育和休闲等诸多因素,若单纯依靠人力去寻找,十分的麻烦和耗时。 此时ArcGIS强大的分析功能就凸显了出来,我们可以通过空间上的距离关…

chatgpt赋能python:Python中同一键可以对应多个值吗?

Python中同一键可以对应多个值吗? Python是一门简单、易学且功能强大的编程语言,它广泛应用于Web开发、机器学习、数据科学等领域。Python的数据结构中的字典(dictionary)是其中一个非常有用的数据结构,它可以存储键值…

解锁高并发世界:深入探索并发编程和线程池技术的实用指南

《深入理解高并发编程:JDK核心技术》这本书是一本非常实用的编程指南,旨在帮助读者深入理解并发编程和线程池技术。笔者将目录分为两大部分:基础篇、工具篇和线程池技术篇。 这本书提供了广泛的内容覆盖和深入的讲解,适合读者在高并发编程领…

MT8183核心板 MTK8183处理器规格参数

MT8183核心板集成了多项高性能硬件,是一款功耗低、高效能的芯片,可以支持高质量的平板电脑平台设计。该芯片结合了一个八核CPU,其中包括四个Arm Cortex-A73的“大核心”和四个Cortex-A53核心,全部运行速度高达2GHz,还有…

chatgpt赋能python:Python中的//2

Python中的//2 Python是一种广泛使用的动态编程语言,因为它功能强大,易于学习和使用。Python在每个程序员的工具包中占据重要位置,这是因为Python可以用于构建各种应用程序。 本文将讨论Python中的//2运算符,解释其作用和用法&a…