-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.py
More file actions
126 lines (101 loc) · 5.01 KB
/
Copy pathmodels.py
File metadata and controls
126 lines (101 loc) · 5.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
from django.db import models
from django.urls import reverse
from datetime import date
class Category(models.Model):
"""Категории"""
name = models.CharField("Название", max_length=100)
description = models.TextField("Описание")
url = models.SlugField(max_length=160, unique=True)
def __str__(self):
return self.name
class Meta:
verbose_name = "Категория"
verbose_name_plural = "Категории"
class Actor(models.Model):
"""Актеры"""
name = models.CharField("Имя", max_length=100)
age = models.PositiveSmallIntegerField("Возраст", default=0)
description = models.TextField("Описание")
image = models.ImageField("Изображение", upload_to="actors/")
def __str__(self):
return self.name
class Meta:
verbose_name = "Актер"
verbose_name_plural = "Актеры"
class Genre(models.Model):
"""Жанры"""
name = models.CharField("Название", max_length=100)
description = models.TextField("Описание")
url = models.SlugField(max_length=160, unique=True)
def __str__(self):
return self.name
class Meta:
verbose_name = "Жанр"
verbose_name_plural = "Жанры"
class Movie(models.Model):
"""Фильмы"""
title = models.CharField("Название", max_length=100)
tagline = models.CharField("Слоган", max_length=100, default='')
description = models.TextField("Описание")
poster = models.ImageField("Постер", upload_to="movies/")
year = models.PositiveSmallIntegerField("Год", default=2023)
country = models.CharField("Страна", max_length=30)
directors = models.ManyToManyField(Actor, verbose_name="Режиссеры", related_name="film_director")
actors = models.ManyToManyField(Actor, verbose_name="Актеры", related_name="film_actor")
genres = models.ManyToManyField(Genre, verbose_name="Жанры")
world_premiere = models.DateField("Премьера", default=date.today)
budget = models.PositiveIntegerField("Бюджет", default=0, help_text="Указывать сумму в долларах")
fees_in_usa = models.PositiveIntegerField("Сборы в США", default=0, help_text="Указывать сумму в долларах")
fees_in_world = models.PositiveIntegerField("Сборы в мире", default=0, help_text="Указывать сумму в долларах")
category = models.ForeignKey(Category, verbose_name="Категория", on_delete=models.SET_NULL, null=True)
url = models.SlugField(max_length=130, unique=True)
draft = models.BooleanField("Черновик", default=False)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("movie_detail", kwargs={"slug": self.url})
class Meta:
verbose_name = "Фильм"
verbose_name_plural = "Фильмы"
class MovieShots(models.Model):
"""Кадры из фильма"""
title = models.CharField("Название", max_length=100)
description = models.TextField("Описание")
image = models.ImageField("Изображение", upload_to="movie_shots/")
movie = models.ForeignKey(Movie, verbose_name="Фильм", on_delete=models.CASCADE)
def __str__(self):
return self.title
class Meta:
verbose_name = "Кадр из фильма"
verbose_name_plural = "Кадры из фильма"
class RatingStar(models.Model):
"""Звезда рейтинга"""
value = models.SmallIntegerField("Значение", default=0)
def __str__(self):
return f'{self.value}'
class Meta:
verbose_name = "Звезда рейтинга"
verbose_name_plural = "Звезды рейтинга"
ordering = ["-value"]
class Rating(models.Model):
"""Рейтинг"""
ip = models.CharField("IP адрес", max_length=15)
star = models.ForeignKey(RatingStar, on_delete=models.CASCADE, verbose_name="звезда")
movie = models.ForeignKey(Movie, on_delete=models.CASCADE, verbose_name="фильм", related_name="ratings")
def __str__(self):
return f"{self.star} - {self.movie}"
class Meta:
verbose_name = "Рейтинг"
verbose_name_plural = "Рейтинги"
class Reviews(models.Model):
"""Отзывы"""
email = models.EmailField()
name = models.CharField("Имя", max_length=100)
text = models.TextField("Сообщение", max_length=5000)
parent = models.ForeignKey('self', verbose_name="Родитель", on_delete=models.SET_NULL, blank=True, null=True)
movie = models.ForeignKey(Movie, verbose_name="фильм", on_delete=models.CASCADE)
def __str__(self):
return f"{self.name} - {self.movie}"
class Meta:
verbose_name = "Отзыв"
verbose_name_plural = "Отзывы"