模型属性

模型当中最重要的属性是 Manager。它是 Django 模型和数据库查询操作之间的接口,并且它被用作从数据库当中 获取实例,如果没有指定自定义的 Manager 默认名称是 objects。Manager 只能通过模型类来访问,不能通过模型实例来访问。

模型方法

模型方法对应的是“行级操作”,对某一对象实例生效,模型属性中的Manager类对应的是“表格级操作”,可以想象有一张数据表格,模型方法可以对一行的数据进行操作,模型属性可以对一个表格进行操作。

from django.db import modelsclass Person(models.Model):first_name = models.CharField(max_length=50)last_name = models.CharField(max_length=50)birth_date = models.DateField()def baby_boomer_status(self):"Returns the person's baby-boomer status."import datetimeif self.birth_date < datetime.date(1945, 8, 1):return "Pre-boomer"elif self.birth_date < datetime.date(1965, 1, 1):return "Baby boomer"else:return "Post-boomer"@propertydef full_name(self):"Returns the person's full name."return f"{self.first_name} {self.last_name}"

重写模型方法
例子:

from django.db import modelsclass Blog(models.Model):name = models.CharField(max_length=100)tagline = models.TextField()def save(self, *args, **kwargs):do_something()super().save(*args, **kwargs)# 执行之前定义的“保存”方法do_something_else()