добавил заполнение
This commit is contained in:
parent
b4a98e1bb6
commit
718e53ac22
@ -82,6 +82,9 @@ class Director(Model):
|
||||
max_length=100,
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.last_name} {self.first_name}'
|
||||
|
||||
class Meta:
|
||||
db_table = 'films_directors'
|
||||
verbose_name = 'Режиссер'
|
||||
@ -101,6 +104,9 @@ class Actor(Model):
|
||||
max_length=100,
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.last_name} {self.first_name}'
|
||||
|
||||
class Meta:
|
||||
db_table = 'films_actors'
|
||||
verbose_name = 'Актер'
|
||||
@ -114,6 +120,9 @@ class Country(Model):
|
||||
max_length=500,
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
db_table = 'films_countries'
|
||||
verbose_name = 'Страна'
|
||||
@ -189,7 +198,7 @@ class Film(Model):
|
||||
)
|
||||
|
||||
countries = ManyToManyField(
|
||||
Director,
|
||||
Country,
|
||||
related_name='country_films',
|
||||
related_query_name='country_films',
|
||||
)
|
||||
|
||||
348
Документы/Заполнение Кинотеатр.sql
Normal file
348
Документы/Заполнение Кинотеатр.sql
Normal file
@ -0,0 +1,348 @@
|
||||
INSERT INTO films_genres (name) VALUES
|
||||
('Боевик'),
|
||||
('Комедия'),
|
||||
('Драма'),
|
||||
('Фантастика'),
|
||||
('Ужасы'),
|
||||
('Триллер'),
|
||||
('Мелодрама'),
|
||||
('Приключения'),
|
||||
('Фэнтези'),
|
||||
('Мистика'),
|
||||
('Детектив'),
|
||||
('Анимация'),
|
||||
('Документальный'),
|
||||
('Исторический'),
|
||||
('Вестерн');
|
||||
|
||||
|
||||
INSERT INTO films_films (name, duration, release_date) VALUES
|
||||
('Звёздные войны: Эпизод IV – Новая надежда', 121, '1977-05-25'),
|
||||
('Властелин колец: Братство Кольца', 178, '2001-12-19'),
|
||||
('Зеленая миля', 189, '1999-12-10'),
|
||||
('Форрест Гамп', 142, '1994-06-23'),
|
||||
('Побег из Шоушенка', 142, '1994-09-10'),
|
||||
('Начало', 148, '2010-07-16'),
|
||||
('Матрица', 136, '1999-03-31'),
|
||||
('Властелин колец: Возвращение Короля', 201, '2003-12-17'),
|
||||
('Интерстеллар', 169, '2014-11-06'),
|
||||
('1+1', 112, '2011-11-02'),
|
||||
('Криминальное чтиво', 154, '1994-09-10'),
|
||||
('Король Лев', 88, '1994-06-15'),
|
||||
('Бойцовский клуб', 139, '1999-10-15'),
|
||||
('Темный рыцарь', 152, '2008-07-18'),
|
||||
('Гладиатор', 155, '2000-05-01'),
|
||||
('Пираты Карибского моря: Проклятие Черной жемчужины', 143, '2003-07-09'),
|
||||
('Хороший, плохой, злой', 161, '1966-12-23'),
|
||||
('Леон', 110, '1994-09-14'),
|
||||
('Терминатор 2: Судный день', 137, '1991-07-03'),
|
||||
('ВАЛЛ·И', 98, '2008-06-27'),
|
||||
('Джанго освобожденный', 165, '2012-12-25'),
|
||||
('Исчезнувшая', 145, '2014-10-02'),
|
||||
('Храброе сердце', 177, '1995-09-08'),
|
||||
('Гарри Поттер и Философский камень', 152, '2001-11-16'),
|
||||
('Индиана Джонс: В поисках утраченного ковчега', 115, '1981-06-12'),
|
||||
('Красота по-американски', 122, '1999-09-08'),
|
||||
('Трасса 60', 92, '2001-02-09'),
|
||||
('Храбрая сердцем', 93, '2012-06-22'),
|
||||
('Кунг-фу Панда', 92, '2008-06-05'),
|
||||
('Рататуй', 111, '2007-06-28'),
|
||||
('Голодные игры', 142, '2012-03-12'),
|
||||
('Мадагаскар', 86, '2005-05-25'),
|
||||
('Человек-паук', 121, '2002-05-03'),
|
||||
('Кунг-фу Панда 2', 91, '2011-05-26'),
|
||||
('Мечтатели', 127, '2003-11-19'),
|
||||
('Гарри Поттер и узник Азкабана', 142, '2004-05-31'),
|
||||
('Люди Икс', 104, '2000-07-13'),
|
||||
('Хранители', 162, '2009-03-06'),
|
||||
('Трансформеры', 144, '2007-06-27'),
|
||||
('Темный рыцарь: Возрождение легенды', 164, '2012-07-16');
|
||||
|
||||
|
||||
INSERT INTO films_films_genres (film_id, genre_id) VALUES
|
||||
(1, 4), -- Звёздные войны: Эпизод IV – Новая надежда - Фантастика
|
||||
(1, 7), -- Звёздные войны: Эпизод IV – Новая надежда - Приключения
|
||||
(2, 4), -- Властелин колец: Братство Кольца - Фантастика
|
||||
(2, 7), -- Властелин колец: Братство Кольца - Приключения
|
||||
(3, 3), -- Зеленая миля - Драма
|
||||
(4, 3), -- Форрест Гамп - Драма
|
||||
(5, 3), -- Побег из Шоушенка - Драма
|
||||
(6, 4), -- Начало - Фантастика
|
||||
(6, 5), -- Начало - Триллер
|
||||
(7, 4), -- Матрица - Фантастика
|
||||
(8, 4), -- Властелин колец: Возвращение Короля - Фантастика
|
||||
(8, 7), -- Властелин колец: Возвращение Короля - Приключения
|
||||
(9, 4), -- Интерстеллар - Фантастика
|
||||
(9, 3), -- Интерстеллар - Драма
|
||||
(10, 3), -- 1+1 - Драма
|
||||
(10, 8), -- 1+1 - Мелодрама
|
||||
(11, 5), -- Криминальное чтиво - Ужасы
|
||||
(12, 7), -- Король Лев - Приключения
|
||||
(13, 6), -- Бойцовский клуб - Триллер
|
||||
(13, 5), -- Бойцовский клуб - Ужасы
|
||||
(14, 6), -- Темный рыцарь - Триллер
|
||||
(14, 5), -- Темный рыцарь - Ужасы
|
||||
(15, 6), -- Гладиатор - Триллер
|
||||
(16, 7), -- Пираты Карибского моря: Проклятие Черной жемчужины - Приключения
|
||||
(17, 8), -- Хороший, плохой, злой - Мелодрама
|
||||
(17, 2), -- Хороший, плохой, злой - Комедия
|
||||
(18, 9), -- Леон - Фэнтези
|
||||
(18, 6), -- Леон - Триллер
|
||||
(19, 9), -- Терминатор 2: Судный день - Фэнтези
|
||||
(19, 4), -- Терминатор 2: Судный день - Фантастика
|
||||
(20, 1), -- ВАЛЛ·И - Боевик
|
||||
(20, 4), -- ВАЛЛ·И - Фантастика
|
||||
(21, 6), -- Джанго освобожденный - Триллер
|
||||
(22, 6), -- Исчезнувшая - Триллер
|
||||
(23, 6), -- Храброе сердце - Триллер
|
||||
(24, 7), -- Гарри Поттер и Философский камень - Приключения
|
||||
(24, 9), -- Гарри Поттер и Философский камень - Фэнтези
|
||||
(25, 6), -- Индиана Джонс: В поисках утраченного ковчега - Триллер
|
||||
(25, 7), -- Индиана Джонс: В поисках утраченного ковчега - Приключения
|
||||
(26, 8), -- Красота по-американски - Мелодрама
|
||||
(26, 2), -- Красота по-американски - Комедия
|
||||
(27, 1), -- Трасса 60 - Боевик
|
||||
(28, 9), -- Храбрая сердцем - Фэнтези
|
||||
(28, 6), -- Храбрая сердцем - Триллер
|
||||
(29, 10), -- Кунг-фу Панда - Мистика
|
||||
(29, 11), -- Кунг-фу Панда - Детектив
|
||||
(30, 10), -- Рататуй - Мистика
|
||||
(30, 11), -- Рататуй - Детектив
|
||||
(31, 11), -- Голодные игры - Детектив
|
||||
(31, 6), -- Голодные игры - Триллер
|
||||
(32, 10), -- Мадагаскар - Мистика
|
||||
(32, 11), -- Мадагаскар - Детектив
|
||||
(33, 12), -- Человек-паук - Анимация
|
||||
(33, 1), -- Человек-паук - Боевик
|
||||
(34, 10), -- Кунг-фу Панда 2 - Мистика
|
||||
(34, 11), -- Кунг-фу Панда 2 - Детектив
|
||||
(35, 3), -- Мечтатели - Драма
|
||||
(36, 4), -- Гарри Поттер и узник Азкабана - Фантастика
|
||||
(36, 7), -- Гарри Поттер и узник Азкабана - Приключения
|
||||
(37, 1), -- Люди Икс - Боевик
|
||||
(37, 4), -- Люди Икс - Фантастика
|
||||
(38, 7), -- Хранители - Приключения
|
||||
(38, 4), -- Хранители - Фантастика
|
||||
(39, 1), -- Трансформеры - Боевик
|
||||
(39, 4), -- Трансформеры - Фантастика
|
||||
(40, 6), -- Темный рыцарь: Возрождение легенды - Триллер
|
||||
(40, 7); -- Темный рыцарь: Возрождение легенды - Приключения
|
||||
|
||||
UPDATE films_films
|
||||
SET description =
|
||||
CASE
|
||||
WHEN name = 'Звёздные войны: Эпизод IV – Новая надежда' THEN 'Описание Звёздные войны: Эпизод IV – Новая надежда'
|
||||
WHEN name = 'Властелин колец: Братство Кольца' THEN 'Описание Властелин колец: Братство Кольца'
|
||||
WHEN name = 'Зеленая миля' THEN 'Описание Зеленая миля'
|
||||
WHEN name = 'Форрест Гамп' THEN 'Описание Форрест Гамп'
|
||||
WHEN name = 'Побег из Шоушенка' THEN 'Описание Побег из Шоушенка'
|
||||
WHEN name = 'Начало' THEN 'Описание Начало'
|
||||
WHEN name = 'Матрица' THEN 'Описание Матрица'
|
||||
WHEN name = 'Властелин колец: Возвращение Короля' THEN 'Описание Властелин колец: Возвращение Короля'
|
||||
WHEN name = 'Интерстеллар' THEN 'Описание Интерстеллар'
|
||||
WHEN name = '1+1' THEN 'Описание 1+1'
|
||||
WHEN name = 'Криминальное чтиво' THEN 'Описание Криминальное чтиво'
|
||||
WHEN name = 'Король Лев' THEN 'Описание Король Лев'
|
||||
WHEN name = 'Бойцовский клуб' THEN 'Описание Бойцовский клуб'
|
||||
WHEN name = 'Темный рыцарь' THEN 'Описание Темный рыцарь'
|
||||
WHEN name = 'Гладиатор' THEN 'Описание Гладиатор'
|
||||
WHEN name = 'Пираты Карибского моря: Проклятие Черной жемчужины' THEN 'Описание Пираты Карибского моря: Проклятие Черной жемчужины'
|
||||
WHEN name = 'Хороший, плохой, злой' THEN 'Описание Хороший, плохой, злой'
|
||||
WHEN name = 'Леон' THEN 'Описание Леон'
|
||||
WHEN name = 'Терминатор 2: Судный день' THEN 'Описание Терминатор 2: Судный день'
|
||||
WHEN name = 'ВАЛЛ·И' THEN 'Описание ВАЛЛ·И'
|
||||
WHEN name = 'Джанго освобожденный' THEN 'Описание Джанго освобожденный'
|
||||
WHEN name = 'Исчезнувшая' THEN 'Описание Исчезнувшая'
|
||||
WHEN name = 'Храброе сердце' THEN 'Описание Храброе сердце'
|
||||
WHEN name = 'Гарри Поттер и Философский камень' THEN 'Описание Гарри Поттер и Философский камень'
|
||||
WHEN name = 'Индиана Джонс: В поисках утраченного ковчега' THEN 'Описание Индиана Джонс: В поисках утраченного ковчега'
|
||||
WHEN name = 'Красота по-американски' THEN 'Описание Красота по-американски'
|
||||
WHEN name = 'Трасса 60' THEN 'Описание Трасса 60'
|
||||
WHEN name = 'Храбрая сердцем' THEN 'Описание Храбрая сердцем'
|
||||
WHEN name = 'Кунг-фу Панда' THEN 'Описание Кунг-фу Панда'
|
||||
WHEN name = 'Рататуй' THEN 'Описание Рататуй'
|
||||
WHEN name = 'Голодные игры' THEN 'Описание Голодные игры'
|
||||
WHEN name = 'Мадагаскар' THEN 'Описание Мадагаскар'
|
||||
WHEN name = 'Человек-паук' THEN 'Описание Человек-паук'
|
||||
WHEN name = 'Кунг-фу Панда 2' THEN 'Описание Кунг-фу Панда 2'
|
||||
WHEN name = 'Мечтатели' THEN 'Описание Мечтатели'
|
||||
WHEN name = 'Гарри Поттер и узник Азкабана' THEN 'Описание Гарри Поттер и узник Азкабана'
|
||||
WHEN name = 'Люди Икс' THEN 'Описание Люди Икс'
|
||||
WHEN name = 'Хранители' THEN 'Описание Хранители'
|
||||
WHEN name = 'Трансформеры' THEN 'Описание Трансформеры'
|
||||
WHEN name = 'Темный рыцарь: Возрождение легенды' THEN 'Описание Темный рыцарь: Возрождение легенды'
|
||||
END;
|
||||
|
||||
|
||||
-- Заполнение таблицы timetable_auditoriums
|
||||
INSERT INTO timetable_auditoriums (number, row_count) VALUES
|
||||
('Зал 1', 10), -- Зал 1, 10 рядов
|
||||
('Зал 2', 8), -- Зал 2, 8 рядов
|
||||
('Зал 3', 12), -- Зал 3, 12 рядов
|
||||
('Зал 4', 9), -- Зал 4, 9 рядов
|
||||
('Зал 5', 11), -- Зал 5, 11 рядов
|
||||
('Зал 6', 7), -- Зал 6, 7 рядов
|
||||
('Зал 7', 10); -- Зал 7, 10 рядов
|
||||
|
||||
|
||||
|
||||
-- Предполагается, что в каждом зале 10 рядов и в каждом ряду 10 кресел.
|
||||
-- Создаем вспомогательную таблицу numbers с числами от 1 до 10
|
||||
CREATE TABLE numbers (n INTEGER PRIMARY KEY);
|
||||
|
||||
INSERT INTO numbers (n) VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
||||
|
||||
-- Вставляем данные в таблицу timetable_rows для каждого зала
|
||||
-- Предполагается, что в каждом зале 10 рядов и в каждом ряду 10 кресел.
|
||||
|
||||
-- Для Зала 1
|
||||
INSERT INTO timetable_rows (row_number, column_count, auditorium_id)
|
||||
SELECT
|
||||
n AS row_number,
|
||||
10 AS column_count, -- Количество кресел в ряду
|
||||
1 AS auditorium_id -- ID Зала 1
|
||||
FROM
|
||||
numbers;
|
||||
|
||||
-- Для Зала 2
|
||||
INSERT INTO timetable_rows (row_number, column_count, auditorium_id)
|
||||
SELECT
|
||||
n AS row_number,
|
||||
10 AS column_count, -- Количество кресел в ряду
|
||||
2 AS auditorium_id -- ID Зала 2
|
||||
FROM
|
||||
numbers;
|
||||
|
||||
-- Для Зала 3
|
||||
INSERT INTO timetable_rows (row_number, column_count, auditorium_id)
|
||||
SELECT
|
||||
n AS row_number,
|
||||
10 AS column_count, -- Количество кресел в ряду
|
||||
3 AS auditorium_id -- ID Зала 3
|
||||
FROM
|
||||
numbers;
|
||||
|
||||
-- Для Зала 4
|
||||
INSERT INTO timetable_rows (row_number, column_count, auditorium_id)
|
||||
SELECT
|
||||
n AS row_number,
|
||||
10 AS column_count, -- Количество кресел в ряду
|
||||
4 AS auditorium_id -- ID Зала 4
|
||||
FROM
|
||||
numbers;
|
||||
|
||||
-- Для Зала 5
|
||||
INSERT INTO timetable_rows (row_number, column_count, auditorium_id)
|
||||
SELECT
|
||||
n AS row_number,
|
||||
10 AS column_count, -- Количество кресел в ряду
|
||||
5 AS auditorium_id -- ID Зала 5
|
||||
FROM
|
||||
numbers;
|
||||
|
||||
-- Для Зала 6
|
||||
INSERT INTO timetable_rows (row_number, column_count, auditorium_id)
|
||||
SELECT
|
||||
n AS row_number,
|
||||
10 AS column_count, -- Количество кресел в ряду
|
||||
6 AS auditorium_id -- ID Зала 6
|
||||
FROM
|
||||
numbers;
|
||||
|
||||
-- Для Зала 7
|
||||
INSERT INTO timetable_rows (row_number, column_count, auditorium_id)
|
||||
SELECT
|
||||
n AS row_number,
|
||||
10 AS column_count, -- Количество кресел в ряду
|
||||
7 AS auditorium_id -- ID Зала 7
|
||||
FROM
|
||||
numbers;
|
||||
|
||||
|
||||
|
||||
-- Определим временной промежуток в рамках рабочего времени кинотеатра (8:00 - 22:00)
|
||||
WITH RECURSIVE session_times AS (
|
||||
SELECT strftime('%Y-%m-%d %H:%M', 'now', 'start of day', '+8 hours') AS start_time
|
||||
UNION ALL
|
||||
SELECT strftime('%Y-%m-%d %H:%M', start_time, '+2 hours') FROM session_times
|
||||
WHERE start_time < strftime('%Y-%m-%d %H:%M', 'now', 'start of day', '+22 hours')
|
||||
)
|
||||
|
||||
|
||||
--INSERT INTO timetable_film_sessions (start_datetime, price, auditorium_id, film_id)
|
||||
SELECT
|
||||
CASE
|
||||
WHEN MAX(end_datetime) IS NULL THEN start_datetime
|
||||
ELSE MAX(end_datetime)
|
||||
END AS start_time,
|
||||
500.00 AS price,
|
||||
auditoriums.id AS auditorium_id,
|
||||
films.id AS film_id
|
||||
FROM
|
||||
session_times
|
||||
CROSS JOIN
|
||||
films_films AS films
|
||||
CROSS JOIN
|
||||
timetable_auditoriums AS auditoriums
|
||||
LEFT JOIN
|
||||
timetable_film_sessions AS prev_sessions
|
||||
ON
|
||||
auditoriums.id = prev_sessions.auditorium_id
|
||||
AND
|
||||
prev_sessions.start_datetime <= start_datetime
|
||||
AND
|
||||
prev_sessions.start_datetime + (films.duration || ' MINUTES') >= start_datetime
|
||||
GROUP BY
|
||||
start_time, auditoriums.id, films.id
|
||||
ORDER BY
|
||||
start_time, film_id;
|
||||
|
||||
|
||||
|
||||
-- Заполнение таблицы Режиссеров (Directors)
|
||||
INSERT INTO films_directors (first_name, last_name) VALUES
|
||||
('Кристофер', 'Нолан'),
|
||||
('Стивен', 'Спилберг'),
|
||||
('Квентин', 'Тарантино'),
|
||||
('Мартин', 'Скорсезе'),
|
||||
('Дэвид', 'Финчер'),
|
||||
('Питер', 'Джексон'),
|
||||
('Ридли', 'Скотт'),
|
||||
('Джеймс', 'Кэмерон'),
|
||||
('Стэнли', 'Кубрик'),
|
||||
('Фрэнсис', 'Форд Коппола'),
|
||||
('Альфред', 'Хичкок'),
|
||||
('Джордж', 'Лукас');
|
||||
|
||||
-- Заполнение таблицы Актеров (Actors)
|
||||
INSERT INTO films_actors (first_name, last_name) VALUES
|
||||
('Том', 'Хэнкс'),
|
||||
('Леонардо', 'ДиКаприо'),
|
||||
('Мэттью', 'МакКонахи'),
|
||||
('Дензел', 'Вашингтон'),
|
||||
('Брэд', 'Питт'),
|
||||
('Мэрил', 'Стрип'),
|
||||
('Натали', 'Портман'),
|
||||
('Джонни', 'Депп'),
|
||||
('Кейт', 'Бланшетт'),
|
||||
('Энди', 'Серкис'),
|
||||
('Сигурни', 'Уивер'),
|
||||
('Кейт', 'Уинслет');
|
||||
|
||||
-- Заполнение таблицы Стран (Countries)
|
||||
INSERT INTO films_countries (name) VALUES
|
||||
('США'),
|
||||
('Великобритания'),
|
||||
('Франция'),
|
||||
('Германия'),
|
||||
('Италия'),
|
||||
('Канада'),
|
||||
('Япония'),
|
||||
('Индия'),
|
||||
('Австралия'),
|
||||
('Россия'),
|
||||
('Китай'),
|
||||
('Испания');
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user