Методы модели Django
Вы можете определять в модели собственные методы и тем самым наделять свои объекты дополнительной функциональностью на уровне строк. Если менеджеры предназначены для выполнения операций над таблицей в целом, то методы модели применяются к одному экземпляру модели.
Методы модели хорошо подходят для инкапсуляции всей бизнес-логики в одном месте, а именно в модели. Проще всего объяснить это на примере. Рассмотрим модель, в которой имеется несколько пользовательских методов:
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() # Да, это относится только к США…
def baby_boomer_status(self):
………….. Показывает, родился ли человек во время,
до или после бума рождаемости…………………..
import datetime
if datetime.date(1945, 8, 1) <= self.birth_date \ and 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):
"Возвращает True, если человек родом со Среднего Запада." return self.state in (‘IL’, ‘WI’, ‘MI’, ‘IN’, ‘OH’, ‘IA\ ‘MO’)
def _get_full_name(self): "Возвращает полное имя."
return u’%s %s’ % (self.first_name, self.last_name) full_name = property(_get_full_name)
Последний метод в этом примере является свойством. (Подробнее о свойствах можно прочитать на странице http://www.python.org/download/ releases/2.2/descrintro/#propertyf. Вот как используются эти методы:
»> р = 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 tt Обратите внимание, что этот метод выглядит как tt атрибут
u’Barack Obama’
Источник: Головатый А., Каплан-Мосс Дж. Django. Подробное руководство, 2-е издание. - Пер. с англ. - СПб.: Символ- Плюс, 2010. - 560 е., ил.
Похожие посты:
- Шаблон проектирования MVC (0)
- Второе представление: динамическое содержимое (0)
- Справочник по API доступа к базе данных Django - ЧАСТЬ 3 (0)
- Третье представление: динамические URL-адреса (0)
- Красиво отформатированные страницы ошибок в Django (0)
- Использование шаблонов в представлениях Django (0)
- Загрузка шаблонов Django (0)