Django中的模型介绍(models.py)

内容分享3小时前发布
0 0 0

在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: 应用迁移文件到数据库。
© 版权声明

相关文章

暂无评论

none
暂无评论...