在Django的模型中添加自定义方法的示例
作者:goldensun 时间:2021-12-07 17:14:58
为了给你的对像添加一个行级功能,那就定义一个自定义方法。 有鉴于manager经常被用来用一些整表操作(table-wide),模型方法应该只对特殊模型实例起作用。
这是一项在模型的一个地方集中业务逻辑的技术。
最好用例子来解释一下。 这个模型有一些自定义方法:
from django.contrib.localflavor.us.models import USStateField
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()
address = models.CharField(max_length=100)
city = models.CharField(max_length=50)
state = USStateField() # Yes, this is U.S.-centric...
def baby_boomer_status(self):
"Returns the person's baby-boomer status."
import datetime
if datetime.date(1945, 8, 1) <= self.birth_date <= datetime.date(1964, 12, 31):
return "Baby boomer"
if self.birth_date < datetime.date(1945, 8, 1):
return "Pre-boomer"
return "Post-boomer"
def is_midwestern(self):
"Returns True if this person is from the Midwest."
return self.state in ('IL', 'WI', 'MI', 'IN', 'OH', 'IA', 'MO')
def _get_full_name(self):
"Returns the person's full name."
return u'%s %s' % (self.first_name, self.last_name)
full_name = property(_get_full_name)
例子中的最后一个方法是一个property。 想了解更多关于属性的信息请访问http://www.python.org/download/releases/2.2/descrintro/#property
这是用法的实例:
>>> p = Person.objects.get(first_name='Barack', last_name='Obama')
>>> p.birth_date
datetime.date(1961, 8, 4)
>>> p.baby_boomer_status()
'Baby boomer'
>>> p.is_midwestern()
True
>>> p.full_name # Note this isn't a method -- it's treated as an attribute
u'Barack Obama'
标签:Django,模型


猜你喜欢
关于mysql 的时间类型选择
2024-01-17 11:44:20
使用WordPress发送电子邮件的相关PHP函数用法解析
2024-05-11 09:44:45

详解Python实现URL监测与即时推送
2023-12-29 08:18:35

设定sql server定期自动备份数据库
2024-01-16 18:14:30
mysql 实现互换表中两列数据方法简单实例
2024-01-24 07:11:04
golang 防缓存击穿singleflight的实现
2024-05-09 09:55:23
python 二维数组90度旋转的方法
2021-05-18 20:16:19
将DataTable作为存储过程参数的用法实例详解
2024-01-27 14:23:24

Python插入Elasticsearch操作方法解析
2021-08-30 01:47:09
Django文件上传与下载(FileFlid)
2023-07-10 11:33:33

一个非常简单好用的Python图形界面库(PysimpleGUI)
2022-12-25 08:17:09

python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
2021-01-03 05:25:29

Python+tkinter编写一个最近很火的强制表白神器
2022-10-25 07:42:10

Python中的xlrd模块使用整理
2023-03-30 17:35:04

JS实现单击输入框弹出选择框效果完整实例
2024-04-22 22:33:02

在python 不同时区之间的差值与转换方法
2023-10-15 12:20:57
11个并不被常用但对开发非常有帮助的Python库
2023-10-25 15:00:56

页面嵌入Windows Media Player播放器代码需要注意的
2023-07-02 17:04:48
mssql无数据库日志文件恢复数据库的方法第1/2页
2024-01-28 16:33:52
OpenCV-Python使用cv2实现傅里叶变换
2023-07-08 05:11:06
