Django models - модели Django является единственными и окончательными источником сведений о ваших данных. Они описывают поведение данных, которые вы храните, и содержат их основные поля. Как правило, каждая модель является представлением одной из таблиц базы данных.
Каждая модель - это класс, являющийся подклассом django.db.models.Model.
Каждый атрибут модели представляет отдельное поле базы данных.
С помощью моделей Django models фактически предоставляет вам автоматически-генерируемый API доступа к базе данных.
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 с учетом базы данных, указанной в вашем файле настроек.
Например, если модели вашего приложения находятся в модуле 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()
- Тип колонки базы данных (например, INTEGER, VARCHAR).
- Виджет для использования интерфейса администратора в Django, если вы хотите его использовать (например, input type=«text»>).
- Минимальные требования к проверке, используемой в интерфейсе администратора Django и автоматически-генерируемых формах.
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, используемый для хранения ваших данных.
Существует также набор общих аргументов, которые доступны для всех типов полей. Все они являются необязательными.
Комментариев нет:
Отправить комментарий