模型属性
模型方法
模型方法对应的是“行级操作”,对某一对象实例生效,模型属性中的Manager类对应的是“表格级操作”,可以想象有一张数据表格,模型方法可以对一行的数据进行操作,模型属性可以对一个表格进行操作。
from django.db import models
class 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 datetime
if 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"
@property
def full_name(self):
"Returns the person's full name."
return f"{self.first_name} {self.last_name}"
重写模型方法
例子:
from django.db import models
class 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()