Django Model教程:数据库操作详解
49 浏览量
更新于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开发的基础。
299 浏览量
151 浏览量
180 浏览量
265 浏览量
153 浏览量
175 浏览量
400 浏览量
234 浏览量
2024-07-22 上传

x_jiali
- 粉丝: 5
最新资源
- Struts2深入实践:数据传输与OGNL类型转换
- 掌握Makefile基础与实践指南
- H桥驱动电路解析:控制直流电机的转向
- C#编程基础教程:从入门到精通
- Struts2权威指南:从Struts1到WebWork的演进
- Spring开发指南:开源框架详解与实践
- Flex 2.0公开课:RIAs与ActionScript3.0的崛起
- SQL Server 2000数据库程序设计:模拟试题与性能优化
- Microsoft Project 2003实战教程:企业级项目管理指南
- C++编程规范与最佳实践
- 正则表达式速查指南
- NS中文参考手册:网络模拟的导航
- 《LINUX与UNIX SHELL编程指南》读书笔记二次发布
- 精通J2EE与BEA WebLogic Server
- 提升硬盘性能与寿命:博士信箱60问详解技巧
- 磁盘阵列RAID技术:提升存储性能与数据安全