在Django中,models是定义数据结构的核心部分。每个模型对应数据库中的一张表,而模型中的属性则代表表中的字段。以下是对Django models用法的详细讲解:
1. 基础概念
- 模型类:继承自django.db.models.Model。
- 字段:模型类中的属性,对应数据库表中的列。
2. 创建一个模型
第一,在你的应用目录下找到或创建models.py文件,并定义模型类。例如,定义一个名为Book的模型来表明书籍信息:
python
编辑
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=100)
published_date = models.DateField()
isbn_number = models.CharField(max_length=13)
price = models.DecimalField(max_digits=6, decimal_places=2)
def __str__(self):
return self.title
这里使用了几个不同的字段类型:
- CharField: 字符串字段,需指定max_length参数。
- DateField: 日期字段。
- DecimalField: 十进制数字段,需要max_digits和decimal_places参数。
3. 字段选项
你还可以为字段添加各种选项,如:
- null=True: 允许数据库层面的NULL值。
- blank=True: 表单验证时允许空值。
- default=value: 设置默认值。
例如,给price字段添加默认值:
python
编辑
price = models.DecimalField(max_digits=6, decimal_places=2, default=0.00)
4. 关系字段
Django支持多种关系字段来定义模型之间的关系,包括ForeignKey, ManyToManyField, 和 OneToOneField。
- ForeignKey: 定义一对多的关系。例如,一本书籍可以有多个评论。
- python
- 编辑
- class Review(models.Model): book = models.ForeignKey(Book, on_delete=models.CASCADE) review_text = models.TextField() rating = models.IntegerField()
- ManyToManyField: 定义多对多的关系。例如,一本书籍可以属于多个类别,同时一个类别也可以包含多本书籍。
- python
- 编辑
- class Category(models.Model): books = models.ManyToManyField(Book) name = models.CharField(max_length=100)
- OneToOneField: 定义一对一的关系。例如,用户资料与用户模型之间可能是一对一的关系。
5. 模型方法
除了字段之外,你还可以在模型中定义方法来执行特定的操作,列如获取书籍的详情链接等。
python
编辑
def get_absolute_url(self):
return reverse('book-detail', args=[str(self.id)])
6. 迁移
当你修改模型后,需要运行迁移命令来更新数据库结构:
- python manage.py makemigrations: 创建新的迁移文件。
- python manage.py migrate: 应用迁移文件到数据库。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...