четверг, 13 сентября 2012 г.

Django Models

Django models - модели Django является единственными и окончательными источником сведений о ваших данных. Они описывают поведение данных, которые вы храните, и содержат их основные поля. Как правило, каждая модель является представлением одной из таблиц базы данных.

Каждая модель - это класс, являющийся подклассом django.db.models.Model.
Каждый атрибут модели представляет отдельное поле базы данных.
С помощью моделей Django models фактически предоставляет вам автоматически-генерируемый API доступа к базе данных.

Пример Django models.

В данном примере определяется класс Person, содержащий поля first_name и last_name:

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

first_name и last_name являются полями нашей модели. Каждое поле определяет атрибут класса, а каждый атрибут в свою очередь представляет собой колонку базы данных.

Выше приведенный класс Person создаст таблицу базу данных примерно такого вида:

CREATE TABLE myapp_person (
    "id" serial NOT NULL PRIMARY KEY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL
);

Имя таблицы, myapp_person, автоматически получено из метаданных нашей модели, однакобыть задан оно может быть переопределено.
Поле id добавлено автоматически, но вы можете изменить это поведение.
В нашем примере используется синтаксис SQL, отвечающий PostgreSQL, однако, стоит отметить, что Django использует SQL с учетом базы данных, указанной в вашем файле настроек.

Использование моделей Django models.

Как только вы определили ваши модели, вы должны сообщить Django, что собираетесь использовать их. Делается это с помощью изменения вашего файла настроек, а именно редактирования INSTALLED_APPS, в который нужно добавить имя вашего модуля, содержащего models.py.

Например, если модели вашего приложения находятся в модуле mysite.myapp.models (данная структура создается после выполнения сценария manage.py startapp), нужная нам часть INSTALLED_APPS должна выглядеть так:

INSTALLED_APPS = (
    #...
    'mysite.myapp',
    #...
)

После редактирования INSTALLED_APPS не забудьте запустить сценарий syncdb.

Поля.

Наиболее важной и единственно необходимой частью любой модели является список полей базы данных, которые она определяет. Поля задаются атрибутами класса.

Например:

class Musician(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    instrument = models.CharField(max_length=100)

class Album(models.Model):
    artist = models.ForeignKey(Musician)
    name = models.CharField(max_length=100)
    release_date = models.DateField()
    num_stars = models.IntegerField() 

Типы полей.

Каждое поле вашей модели должно быть экземпляром соответствующего класса Field. Django использует типы класса Field для определения нескольких вещей:
- Тип колонки базы данных (например, INTEGER, VARCHAR).
- Виджет для использования интерфейса администратора в Django, если вы хотите его использовать (например, input type=«text»>).
- Минимальные требования к проверке, используемой в интерфейсе администратора Django и автоматически-генерируемых формах.

Django поставляется с десятками встроенных типов; вы можете посмотреть полный список в справке по полям моделей. Так же вы можете создавать собственные типы полей.

Параметры полей.

Каждое поле имеет определенный набор характерных аргументов, документированных в справке по полям моделей. Например, CharField (и его подклассы) требует аргумент max_length, который определяет размер поля базы данных VARCHAR, используемый для хранения ваших данных.

Существует также набор общих аргументов, которые доступны для всех типов полей. Все они являются необязательными.

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

Отправить комментарий