Django Model教程:数据库操作详解
3 浏览量
更新于2024-08-31
收藏 125KB PDF 举报
"Django基础之Model操作步骤(介绍) - 学习Django框架如何通过Model进行数据库操作,包括各种字段类型的使用和设置"
在Django框架中,Model是与数据库交互的核心组件,它允许开发者定义数据模型并自动创建对应的数据库表。下面将详细介绍Django Model的操作步骤以及各种字段类型。
一、创建Model表
当你创建一个Python类,并继承自`django.db.models.Model`时,Django会自动识别这个类并将其映射为数据库中的表。例如:
```python
#coding:Utf8
from django.db import models
class UserInfo(models.Model):
name = models.CharField(max_length=30)
email = models.EmailField()
memo = models.TextField()
```
在这个例子中,`UserInfo`类定义了一个用户信息的模型,包含三个字段:名字(name)、电子邮件(email)和备注(memo)。
二、字段类型详解
1. `models.AutoField`: 自增列,默认情况下,如果未显式声明,Django会自动生成一个名为`id`的主键列,它是整型(int)且自动递增。如果你想自定义一个自增列,可以设置`primary_key=True`。
2. `models.CharField`: 字符串字段,需要指定`max_length`参数,例如`max_length=30`,表示最大长度30个字符。
3. `models.BooleanField`: 布尔类型,如`tinyint(1)`。默认不能为空,但可以使用`Blank=True`来允许为空。
4. `models.CommaSeparatedIntegerField`: 以逗号分隔的整数,继承自`CharField`,同样需要`max_length`参数。
5. `models.DateField`: 日期类型,如`date`。可以使用`auto_now=True`或`auto_now_add=True`来自动管理时间戳。
6. `models.DateTimeField`: 日期时间类型,类似于`date`,但包含时间部分。同样支持`auto_now`和`auto_now_add`参数。
7. `models.DecimalField`: 十进制小数类型,需要指定`max_digits`(整数部分的最大位数)和`decimal_places`(小数位数)。
8. `models.EmailField`: 邮箱地址字段,它对输入的字符串进行正则表达式验证,确保符合邮箱格式。
9. `models.FloatField`: 浮点类型,如`double`。
10. `models.IntegerField`: 整形,如`int`。
11. `models.BigIntegerField`: 长整形,用于存储大整数,适用于超出`IntegerField`范围的数值。
三、数据库迁移
创建了Model后,你需要使用Django的命令行工具执行数据库迁移来创建对应的数据库表。首先运行`python manage.py makemigrations`生成迁移文件,然后执行`python manage.py migrate`应用这些迁移,将模型的变化同步到数据库。
四、实例化与保存
创建Model实例后,通过调用`.save()`方法将数据保存到数据库。例如:
```python
user = UserInfo(name='John Doe', email='john@example.com', memo='Test user')
user.save()
```
五、查询与操作
Django提供了丰富的查询API,你可以很容易地获取、更新或删除数据。例如,查找所有用户:
```python
users = UserInfo.objects.all()
```
更新用户信息:
```python
user = UserInfo.objects.get(id=1)
user.name = 'Jane Doe'
user.save()
```
删除用户:
```python
user = UserInfo.objects.get(id=1)
user.delete()
```
Django的Model提供了强大的数据库操作能力,通过简单的Python代码即可实现复杂的数据库操作,极大地提高了开发效率。了解和熟练掌握Model的使用是Django开发的基础。
2018-05-16 上传
2019-05-26 上传
2020-09-17 上传
点击了解资源详情
2020-09-17 上传
2020-09-17 上传
2020-09-20 上传
2024-07-22 上传
2020-09-16 上传
x_jiali
- 粉丝: 5
- 资源: 897
最新资源
- SSM动力电池数据管理系统源码及数据库详解
- R语言桑基图绘制与SCI图输入文件代码分析
- Linux下Sakagari Hurricane翻译工作:cpktools的使用教程
- prettybench: 让 Go 基准测试结果更易读
- Python官方文档查询库,提升开发效率与时间节约
- 基于Django的Python就业系统毕设源码
- 高并发下的SpringBoot与Nginx+Redis会话共享解决方案
- 构建问答游戏:Node.js与Express.js实战教程
- MATLAB在旅行商问题中的应用与优化方法研究
- OMAPL138 DSP平台UPP接口编程实践
- 杰克逊维尔非营利地基工程的VMS项目介绍
- 宠物猫企业网站模板PHP源码下载
- 52简易计算器源码解析与下载指南
- 探索Node.js v6.2.1 - 事件驱动的高性能Web服务器环境
- 找回WinSCP密码的神器:winscppasswd工具介绍
- xctools:解析Xcode命令行工具输出的Ruby库