Методы модели Django

Опубликовал: Saturday, February 4, 2024 в категории 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 е., ил.

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *