добавил новые таблицы в базу, расширил информацию о фильме
This commit is contained in:
parent
e52e0a5374
commit
b4a98e1bb6
@ -1,7 +1,7 @@
|
||||
from django.contrib import admin
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
from films.models import Film, Genre
|
||||
from films.models import Film, Genre, Actor, Director, Country
|
||||
|
||||
|
||||
@admin.register(Film)
|
||||
@ -16,6 +16,9 @@ class FilmAdmin(admin.ModelAdmin):
|
||||
|
||||
filter_horizontal = [
|
||||
Film.genres.field.name,
|
||||
Film.directors.field.name,
|
||||
Film.countries.field.name,
|
||||
Film.actors.field.name,
|
||||
]
|
||||
|
||||
def get_image(self, obj):
|
||||
@ -29,3 +32,26 @@ class GenreAdmin(admin.ModelAdmin):
|
||||
list_display = [
|
||||
Genre.name.field.name,
|
||||
]
|
||||
|
||||
|
||||
@admin.register(Actor)
|
||||
class ActorAdmin(admin.ModelAdmin):
|
||||
list_display = [
|
||||
Actor.first_name.field.name,
|
||||
Actor.last_name.field.name,
|
||||
]
|
||||
|
||||
|
||||
@admin.register(Director)
|
||||
class DirectorAdmin(admin.ModelAdmin):
|
||||
list_display = [
|
||||
Director.first_name.field.name,
|
||||
Director.last_name.field.name,
|
||||
]
|
||||
|
||||
|
||||
@admin.register(Country)
|
||||
class CountryAdmin(admin.ModelAdmin):
|
||||
list_display = [
|
||||
Country.name.field.name,
|
||||
]
|
||||
|
||||
@ -0,0 +1,133 @@
|
||||
# Generated by Django 4.2 on 2024-04-21 12:33
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("films", "0005_film_age_limit"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="Actor",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"first_name",
|
||||
models.CharField(
|
||||
help_text="Имя актера", max_length=100, verbose_name="Имя"
|
||||
),
|
||||
),
|
||||
(
|
||||
"last_name",
|
||||
models.CharField(
|
||||
help_text="Фамилия актера",
|
||||
max_length=100,
|
||||
verbose_name="Фамилия",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "Актер",
|
||||
"verbose_name_plural": "Актеры",
|
||||
"db_table": "films_actors",
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Country",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"name",
|
||||
models.CharField(
|
||||
help_text="Название страны",
|
||||
max_length=500,
|
||||
verbose_name="Название",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "Страна",
|
||||
"verbose_name_plural": "Страны",
|
||||
"db_table": "films_countries",
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Director",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"first_name",
|
||||
models.CharField(
|
||||
help_text="Имя режиссера", max_length=100, verbose_name="Имя"
|
||||
),
|
||||
),
|
||||
(
|
||||
"last_name",
|
||||
models.CharField(
|
||||
help_text="Фамилия режиссера",
|
||||
max_length=100,
|
||||
verbose_name="Фамилия",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "Режиссер",
|
||||
"verbose_name_plural": "Режиссеры",
|
||||
"db_table": "films_directors",
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="film",
|
||||
name="actors",
|
||||
field=models.ManyToManyField(
|
||||
related_name="actor_films",
|
||||
related_query_name="actor_films",
|
||||
to="films.actor",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="film",
|
||||
name="countries",
|
||||
field=models.ManyToManyField(
|
||||
related_name="country_films",
|
||||
related_query_name="country_films",
|
||||
to="films.director",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="film",
|
||||
name="directors",
|
||||
field=models.ManyToManyField(
|
||||
related_name="director_films",
|
||||
related_query_name="director_films",
|
||||
to="films.director",
|
||||
),
|
||||
),
|
||||
]
|
||||
@ -9,6 +9,7 @@ from django.db.models import (
|
||||
DateField,
|
||||
ManyToManyField,
|
||||
Manager, ImageField, Min,
|
||||
ForeignKey, CASCADE,
|
||||
)
|
||||
from django.utils import timezone
|
||||
from django.core.validators import MinValueValidator
|
||||
@ -68,6 +69,57 @@ class Genre(Model):
|
||||
verbose_name_plural = 'Жанры'
|
||||
|
||||
|
||||
class Director(Model):
|
||||
first_name = CharField(
|
||||
'Имя',
|
||||
help_text='Имя режиссера',
|
||||
max_length=100,
|
||||
)
|
||||
|
||||
last_name = CharField(
|
||||
'Фамилия',
|
||||
help_text='Фамилия режиссера',
|
||||
max_length=100,
|
||||
)
|
||||
|
||||
class Meta:
|
||||
db_table = 'films_directors'
|
||||
verbose_name = 'Режиссер'
|
||||
verbose_name_plural = 'Режиссеры'
|
||||
|
||||
|
||||
class Actor(Model):
|
||||
first_name = CharField(
|
||||
'Имя',
|
||||
help_text='Имя актера',
|
||||
max_length=100,
|
||||
)
|
||||
|
||||
last_name = CharField(
|
||||
'Фамилия',
|
||||
help_text='Фамилия актера',
|
||||
max_length=100,
|
||||
)
|
||||
|
||||
class Meta:
|
||||
db_table = 'films_actors'
|
||||
verbose_name = 'Актер'
|
||||
verbose_name_plural = 'Актеры'
|
||||
|
||||
|
||||
class Country(Model):
|
||||
name = CharField(
|
||||
'Название',
|
||||
help_text='Название страны',
|
||||
max_length=500,
|
||||
)
|
||||
|
||||
class Meta:
|
||||
db_table = 'films_countries'
|
||||
verbose_name = 'Страна'
|
||||
verbose_name_plural = 'Страны'
|
||||
|
||||
|
||||
class Film(Model):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
@ -130,6 +182,24 @@ class Film(Model):
|
||||
),
|
||||
)
|
||||
|
||||
directors = ManyToManyField(
|
||||
Director,
|
||||
related_name='director_films',
|
||||
related_query_name='director_films',
|
||||
)
|
||||
|
||||
countries = ManyToManyField(
|
||||
Director,
|
||||
related_name='country_films',
|
||||
related_query_name='country_films',
|
||||
)
|
||||
|
||||
actors = ManyToManyField(
|
||||
Actor,
|
||||
related_name='actor_films',
|
||||
related_query_name='actor_films',
|
||||
)
|
||||
|
||||
def get_image_300x300(self):
|
||||
return sorl.thumbnail.get_thumbnail(
|
||||
self.image,
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 195 KiB |
Loading…
x
Reference in New Issue
Block a user