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
最新资源
- NHL_project:NHL PBP Shot数据,以及用于尝试创建预期目标模型的模型
- 算法::pencil::open_book:算法演练记录数据结构
- F12x_ADC0_ExternalInput.zip_单片机开发_C/C++_
- Free mailtrack extension for Gmail MailerPlex-crx插件
- OLED和LCD 取模软件。和取模方法
- spamdot-开源
- nology-pre-course-challenge:Nology课前挑战-个人网站
- aws-notes:AWS SAA考试说明
- seven segment.rar_C/C++_
- LinkMatch For Zoho Recruit-crx插件
- numberTouchGame
- cp-lib:我的算法库和主题专注于竞争性编程
- bbcpufreq-开源
- AGENCE_IMMOBILIERE
- ac-telemetry-py:Crude Assetto Corsa遥测记录器,专门为解决PS4XB1缺少的工具而编写
- RuidoImagenes