Django Model教程:数据库操作详解
164 浏览量
更新于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 上传
2021-01-20 上传
点击了解资源详情
2020-09-17 上传
2020-09-17 上传
2020-09-20 上传
2024-07-22 上传
2020-09-16 上传
x_jiali
- 粉丝: 5
- 资源: 897
最新资源
- JHU荣誉单变量微积分课程教案介绍
- Naruto爱好者必备CLI测试应用
- Android应用显示Ignaz-Taschner-Gymnasium取消课程概览
- ASP学生信息档案管理系统毕业设计及完整源码
- Java商城源码解析:酒店管理系统快速开发指南
- 构建可解析文本框:.NET 3.5中实现文本解析与验证
- Java语言打造任天堂红白机模拟器—nes4j解析
- 基于Hadoop和Hive的网络流量分析工具介绍
- Unity实现帝国象棋:从游戏到复刻
- WordPress文档嵌入插件:无需浏览器插件即可上传和显示文档
- Android开源项目精选:优秀项目篇
- 黑色设计商务酷站模板 - 网站构建新选择
- Rollup插件去除JS文件横幅:横扫许可证头
- AngularDart中Hammock服务的使用与REST API集成
- 开源AVR编程器:高效、低成本的微控制器编程解决方案
- Anya Keller 图片组合的开发部署记录