如果 Django 自带的方法未能满足我们的需求,我们可以添加上自定义的方法:
from django.db import models
from datetime import date
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
birth_date = models.DateField()
# 自定义一个获取年龄的方法
def get_age(self):
age = date.today().year - self.birth_date.year
return age
def _get_full_name(self):
return self.first_name + ' ' + self.last_name
# property 能把一个方法变成一个class,可以当做属性访问,从而提供更加友好访问方式
full_name = property(_get_full_name)
def __str__(self):
return self.full_name
添加一个 Person 实例:
Person.objects.create(
first_name = 'John',
last_name = 'Lennon',
birth_date = date(1940, 10, 9)
)
调用自定义方法:
p = Person.objects.get(first_name = 'John')
>>> p.get_age()
77
>>> p.full_name
'John Lennon'