diff --git a/apps/movies/__init__.py b/apps/movies/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/movies/admin.py b/apps/movies/admin.py new file mode 100644 index 0000000..91cb410 --- /dev/null +++ b/apps/movies/admin.py @@ -0,0 +1,9 @@ +from django.contrib import admin + +from .models import MediaFormat, Movie + +# Register your models here. + +# Register your models here. +admin.site.register(Movie) +admin.site.register(MediaFormat) diff --git a/apps/movies/apps.py b/apps/movies/apps.py new file mode 100644 index 0000000..0f5bdfb --- /dev/null +++ b/apps/movies/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class MoviesConfig(AppConfig): + name = "apps.movies" diff --git a/apps/movies/migrations/0001_initial.py b/apps/movies/migrations/0001_initial.py new file mode 100644 index 0000000..a8e7d32 --- /dev/null +++ b/apps/movies/migrations/0001_initial.py @@ -0,0 +1,32 @@ +# Generated by Django 6.0 on 2026-02-28 17:08 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='MediaFormat', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=50)), + ], + ), + migrations.CreateModel( + name='Movie', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=200)), + ('release_date', models.DateField()), + ('pub_date', models.DateTimeField(verbose_name='date published')), + ('media_formats', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='movies.mediaformat')), + ], + ), + ] diff --git a/apps/movies/migrations/0002_remove_movie_pub_date_remove_movie_media_formats_and_more.py b/apps/movies/migrations/0002_remove_movie_pub_date_remove_movie_media_formats_and_more.py new file mode 100644 index 0000000..17fc704 --- /dev/null +++ b/apps/movies/migrations/0002_remove_movie_pub_date_remove_movie_media_formats_and_more.py @@ -0,0 +1,26 @@ +# Generated by Django 6.0 on 2026-02-28 17:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('movies', '0001_initial'), + ] + + operations = [ + migrations.RemoveField( + model_name='movie', + name='pub_date', + ), + migrations.RemoveField( + model_name='movie', + name='media_formats', + ), + migrations.AddField( + model_name='movie', + name='media_formats', + field=models.ManyToManyField(to='movies.mediaformat'), + ), + ] diff --git a/apps/movies/migrations/0003_movie_added_date.py b/apps/movies/migrations/0003_movie_added_date.py new file mode 100644 index 0000000..0af469e --- /dev/null +++ b/apps/movies/migrations/0003_movie_added_date.py @@ -0,0 +1,20 @@ +# Generated by Django 6.0 on 2026-02-28 17:38 + +import django.utils.timezone +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('movies', '0002_remove_movie_pub_date_remove_movie_media_formats_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='movie', + name='added_date', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + ] diff --git a/apps/movies/migrations/__init__.py b/apps/movies/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/movies/models.py b/apps/movies/models.py new file mode 100644 index 0000000..4fa11c8 --- /dev/null +++ b/apps/movies/models.py @@ -0,0 +1,21 @@ +from django.db import models +from django.utils import timezone + + +# Create your models here. +class MediaFormat(models.Model): + name = models.CharField(max_length=50) + + def __str__(self): + return self.name + + +class Movie(models.Model): + title = models.CharField(max_length=200) + release_date = models.DateField() + media_formats = models.ManyToManyField(MediaFormat) + + added_date = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return self.title diff --git a/apps/movies/templates/movies/index.html b/apps/movies/templates/movies/index.html new file mode 100644 index 0000000..c4c8cb2 --- /dev/null +++ b/apps/movies/templates/movies/index.html @@ -0,0 +1,52 @@ + +
| Title | +Release Date | +Date Added | +Formats | +
|---|---|---|---|
| {{ m.title }} | +{{ m.release_date }} | +{{ m.added_date }} | +{{ m.media_formats }} | +