|
Оглавление
|
В качестве постоянного примера в этой и следующих главах мы сосредоточимся на простом формате данных: книга, автор, издатель. Мы используем это в качестве нашего примера, потому что концептуальные взаимоотношения между этими понятиями широко известны и потому что этот общий формат данных используется в книгах по SQL. Вы также читаете книгу, которая создана авторами и напечатана издателем! Мы предположим следующие концепции, поля и взаимоотношения:
Первым шагом в использовании этой схемы базы данных будет её
выражение в виде кода Python. В файл
from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()
class Author(models.Model):
salutation = models.CharField(max_length=10)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
headshot = models.ImageField(upload_to='/tmp')
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
Быстро рассмотрим этот код, чтобы разобраться с основами. Первое, что следует отметить — каждая модель
представлена в виде класса Python, который является потомком
класса
django.db.models.
Обычно каждая модель соответствует одной таблице в базе данных
и, обычно, каждый атрибут модели соответствует столбцу в
таблице. Имя атрибута модели соответствует имени столбца
таблицы, а тип атрибута (т.е., CharField)
соответствует типу столбца (т.е.,
varchar). Например, модель
CREATE TABLE "books_publisher" (
"id" serial NOT NULL PRIMARY KEY,
"name" varchar(30) NOT NULL,
"address" varchar(50) NOT NULL,
"city" varchar(60) NOT NULL,
"state_province" varchar(30) NOT NULL,
"country" varchar(50) NOT NULL,
"website" varchar(200) NOT NULL
);
На самом деле Django может сгенерировать такой оператор CREATE TABLE автоматически, мы это скоро покажем. Исключением из правила «один класс для одной таблицы» является случай отношения «многие-ко-многим». В нашем примере Book имеет такое поле — authors. Это означает, что книга имеет одного или более авторов, но таблица Book не получает такого столбца, Django создаёт дополнительную таблицу, которая применяется для обеспечения этой функциональности. Полный список типов полей и опций синтаксиса моделей приведены в Приложении «Справочник определений модели». Наконец, следует отметить, что мы нигде явно не определяли первичные ключи. Если специально не запрещать, то Django автоматически создаёт поле id для таблицы каждой модели. Необходимо, чтобы каждая модель Django имела первичный ключ, созданный по одному полю. |
Увидели ошибку?
Выделите её мышкой и нажмите
-
Обработано:
504
49
130
71
Версия книги
1.0
2.0
Версия 2.0 в процессе перевода!
Мой луч
Многообразие света
Полезное
Актуальные вакансии,
Python работа
для python-разработчиков.
Скачать в формате
CHM от 2 сентябряЗаказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта. Чем чаще заказываете — тем больше перевожу. Русская группа
Ускорить процесс перевода!
R130494980980
Z425285133788 E112528079659 U327380922061 Книга помогла реализовать:
|
| © 2008-2009 Ruslan Popov @ gmail.com | Powered by Django 1.1 beta 1 SVN-11114 |