在Django中,模型(Model)是用于定义数据库表结构的Python类。每个模型类对应数据库中的一个表,模型类的字段(Field)对应表中的列。Django的ORM(对象关系映射)会自动将模型类映射到数据库表,并提供方便的API来操作数据库。
定义模型的步骤:
1.创建Django应用:
首先,你需要有一个Django应用。如果你还没有创建应用,可以使用以下命令创建:
python manage.py startapp myapp
2.在应用的models.py文件中定义模型:
打开myapp/models.py文件,定义你的模型类。每个模型类都继承自django.db.models.Model。
以下是一个简单的模型定义示例:
from django.db import models
class Person(models.Model):
# 定义字段
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
email = models.EmailField(unique=True)
age = models.IntegerField(null=True, blank=True)
created_at = models.DateTimeField(auto_now_add=True)
# 定义元数据
class Meta:
db_table = 'people' # 自定义表名
ordering = ['-created_at'] # 按创建时间降序排列
# 定义字符串表示
def __str__(self):
return f"{self.first_name} {self.last_name}"
class Person(models.Model):
# 定义字段
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
email = models.EmailField(unique=True)
age = models.IntegerField(null=True, blank=True)
created_at = models.DateTimeField(auto_now_add=True)
# 定义元数据
class Meta:
db_table = 'people' # 自定义表名
ordering = ['-created_at'] # 按创建时间降序排列
# 定义字符串表示
def __str__(self):
return f"{self.first_name} {self.last_name}"
3.定义字段:
在模型类中,使用Django提供的字段类型(如CharField、IntegerField、DateTimeField等)来定义表的列。
字段类型和选项:
CharField:用于存储字符串,必须指定max_length。
IntegerField:用于存储整数。
EmailField:用于存储电子邮件地址,会自动验证格式。
DateTimeField:用于存储日期和时间。
auto_now_add=True:在创建记录时自动设置为当前时间。
auto_now=True:在每次更新记录时自动设置为当前时间。
null=True:允许数据库中的该字段为空。
blank=True:允许表单中的该字段为空。
4.定义元数据(可选):
你可以通过在模型类中定义Meta类来设置一些额外的选项,比如表名、排序方式等。
5.迁移数据库:
定义好模型后,需要生成迁移文件并应用到数据库中:
生成迁移文件:
python manage.py makemigrations
应用迁移:
python manage.py migrate