- 举例:
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 '%s %s' % (self.first_name, self.last_name)
- 解释:
函数full_name返回一个字符串,其中包含个人的名字和姓氏。@property 装饰器的作用是声明它可以像普通属性一样被访问。
这意味着可以像调用成员变量而不是函数一样调用full_name,如下所示:
name = person.full_name
而不是
name = person.full_name()
- 更多用法:
@full_name.setter
def full_name(self, value):
names = value.split(' ')
self.first_name = names[0]
self.last_name = names[1]
使用此方法,您可以如下设置人员full_name:
person.full_name = 'John Doe'
而不是
person.set_full_name('John Doe')