Modified models, built admin panel, added data

parent ea93d87e
Christian Louis Dalmas Olivares, 193636, CSCI40-F
Lab 01: Song Library
February 13, 2023
Lab 02: Song Library v2
February 21, 2023
This lab has been completed truthfully myself, Christian Louis Olivares.
Christian Louis Dalmas Olivares, February 13, 2023
\ No newline at end of file
Christian Louis Dalmas Olivares, February 21, 2023
\ No newline at end of file
from django.contrib import admin
from .models import Artist, Album, Song
# Register your models here.
class ArtistAdmin(admin.ModelAdmin):
model = Artist
list_display = ('artist_name', 'birth_name', 'monthly_listeners',)
search_fields = ('artist_name', 'birth_name',)
list_filter = ('artist_name', 'birth_name')
class AlbumAdmin(admin.ModelAdmin):
model = Album
list_display = ('album_name', 'description', 'release_date', 'label', 'song_count',)
search_fields = ('album_name', 'description', 'label',)
list_filter = ('album_name',)
class SongAdmin(admin.ModelAdmin):
model = Song
list_display = ('song_title', 'song_length', 'lyrics', 'music_video',)
search_fields = ('song_title', 'lyrics',)
list_filter = ('song_title',)
# registering the model and the admin is what tells
# Django that admin pages must be generated for the models specified
admin.site.register(Artist, ArtistAdmin)
admin.site.register(Album, AlbumAdmin)
admin.site.register(Song, SongAdmin)
\ No newline at end of file
# Generated by Django 4.1.6 on 2023-02-13 06:31
# Generated by Django 4.1.6 on 2023-02-21 10:00
from django.db import migrations, models
import django.db.models.deletion
......@@ -6,8 +6,9 @@ import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('about', '0001_initial'),
]
operations = [
......@@ -16,16 +17,20 @@ class Migration(migrations.Migration):
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('album_name', models.CharField(max_length=50)),
('description', models.CharField(max_length=100)),
('release_date', models.DateField()),
('description', models.CharField(max_length=100)),
('label', models.CharField(default='', max_length=50)),
('song_count', models.IntegerField(default=0)),
],
),
migrations.CreateModel(
name='Artist',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('artist_name', models.CharField(max_length=50, unique=True)),
('artist_name', models.CharField(max_length=50)),
('monthly_listeners', models.IntegerField()),
('birth_name', models.CharField(default='', max_length=50)),
('bio', models.CharField(default='', max_length=700)),
],
),
migrations.CreateModel(
......@@ -34,19 +39,15 @@ class Migration(migrations.Migration):
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('song_title', models.CharField(max_length=50)),
('song_length', models.TimeField()),
('album', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='about.album')),
('artist', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='about.artist')),
('music_video', models.BooleanField(default=0)),
('lyrics', models.TextField(default='')),
('album', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='song_album', to='Homepage.album')),
('artist', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='song_artist', to='Homepage.artist')),
],
),
migrations.DeleteModel(
name='IndexCard',
),
migrations.DeleteModel(
name='Subject',
),
migrations.AddField(
model_name='album',
name='artist',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='about.artist'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='album_artist', to='Homepage.artist'),
),
]
# Generated by Django 4.1.6 on 2023-02-13 06:53
# Generated by Django 4.1.6 on 2023-02-21 10:25
from django.db import migrations, models
......@@ -6,13 +6,13 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('about', '0003_alter_album_artist_alter_song_album_and_more'),
('Homepage', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='artist',
name='artist_name',
field=models.CharField(max_length=50),
model_name='song',
name='song_length',
field=models.IntegerField(default=0),
),
]
from django.db import models
from django.urls import reverse
# Create your models here.
class Artist(models.Model):
artist_name = models.CharField(max_length=50)
birth_name = models.CharField(max_length=50, default='')
monthly_listeners = models.IntegerField()
bio = models.CharField(max_length=700, default='')
def __str__(self):
return '{}'.format(self.artist_name)
def get_absolute_url(self):
return reverse('artist_detail', args=[str(self.artist_name)])
class Album(models.Model):
album_name = models.CharField(max_length=50)
description = models.CharField(max_length=100)
release_date = models.DateField()
label = models.CharField(max_length=50, default='')
song_count = models.IntegerField(default=0)
artist = models.ForeignKey(
Artist,
on_delete=models.CASCADE,
related_name='album_artist'
)
def __str__(self):
return '{}\'s {}'.format(self.artist, self.album_name)
def get_absolute_url(self):
return reverse('album_detail', args=[str(self.album_name)])
class Song(models.Model):
song_title = models.CharField(max_length=50)
song_length = models.IntegerField(default=0)
lyrics = models.TextField(default='')
music_video = models.BooleanField(default=0)
artist = models.ForeignKey(
Artist,
on_delete=models.CASCADE,
related_name='song_artist'
)
album = models.ForeignKey(
Album,
on_delete=models.CASCADE,
related_name='song_album'
)
def __str__(self):
return '{} by {} on their album {}'.format(self.song_title, self.artist, self.album)
def get_absolute_url(self):
return reverse('subject_detail', args=[str(self.song_title)])
# Generated by Django 4.1.6 on 2023-02-13 06:15
# Generated by Django 4.1.6 on 2023-02-21 09:50
from django.db import migrations, models
import django.db.models.deletion
......@@ -13,22 +13,35 @@ class Migration(migrations.Migration):
operations = [
migrations.CreateModel(
name='Subject',
name='Album',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=50)),
('teacher_name', models.CharField(max_length=50)),
('units', models.IntegerField()),
('album_name', models.CharField(max_length=50)),
('release_date', models.DateField()),
('description', models.CharField(max_length=100)),
],
),
migrations.CreateModel(
name='IndexCard',
name='Artist',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
('section', models.CharField(max_length=5)),
('age', models.IntegerField()),
('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='about.subject')),
('artist_name', models.CharField(max_length=50)),
('monthly_listeners', models.IntegerField()),
],
),
migrations.CreateModel(
name='Song',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('song_title', models.CharField(max_length=50)),
('song_length', models.TimeField()),
('album', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='song_album', to='about.album')),
('artist', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='song_artist', to='about.artist')),
],
),
migrations.AddField(
model_name='album',
name='artist',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='album_artist', to='about.artist'),
),
]
# Generated by Django 4.1.6 on 2023-02-21 09:50
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('about', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='album',
name='label',
field=models.CharField(default='', max_length=50),
),
migrations.AddField(
model_name='artist',
name='bio',
field=models.CharField(default='', max_length=700),
),
migrations.AddField(
model_name='artist',
name='birth_name',
field=models.CharField(default='', max_length=50),
),
migrations.AddField(
model_name='song',
name='lyrics',
field=models.TextField(default=''),
),
migrations.AddField(
model_name='song',
name='music_video',
field=models.BooleanField(default=0),
),
]
# Generated by Django 4.1.6 on 2023-02-21 09:50
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('about', '0002_album_label_artist_bio_artist_birth_name_song_lyrics_and_more'),
]
operations = [
migrations.AddField(
model_name='album',
name='song_count',
field=models.IntegerField(default=0),
),
]
# Generated by Django 4.1.6 on 2023-02-13 06:37
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('about', '0002_album_artist_song_delete_indexcard_delete_subject_and_more'),
]
operations = [
migrations.AlterField(
model_name='album',
name='artist',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='album_artist', to='about.artist'),
),
migrations.AlterField(
model_name='song',
name='album',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='song_album', to='about.album'),
),
migrations.AlterField(
model_name='song',
name='artist',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='song_artist', to='about.artist'),
),
]
# Generated by Django 4.1.6 on 2023-02-21 10:00
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('about', '0003_album_song_count'),
]
operations = [
migrations.RemoveField(
model_name='song',
name='album',
),
migrations.RemoveField(
model_name='song',
name='artist',
),
migrations.DeleteModel(
name='Album',
),
migrations.DeleteModel(
name='Artist',
),
migrations.DeleteModel(
name='Song',
),
]
from django.db import models
\ No newline at end of file
from django.urls import reverse
class Artist(models.Model):
artist_name = models.CharField(max_length=50)
monthly_listeners = models.IntegerField()
def __str__(self):
return '{} has {} monthly listeners'.format(self.artist_name, self.monthly_listeners)
def get_absolute_url(self):
return reverse('artist_detail', args=[str(self.artist_name)])
class Album(models.Model):
album_name = models.CharField(max_length=50)
artist = models.ForeignKey(
Artist,
on_delete=models.CASCADE,
related_name='album_artist'
)
release_date = models.DateField()
description = models.CharField(max_length=100)
def __str__(self):
return '{} created the album {}. It was created on {}. Description: {} .'.format(self.artist, self.album_name, self.release_date, self.description)
def get_absolute_url(self):
return reverse('album_detail', args=[str(self.album_name)])
class Song(models.Model):
song_title = models.CharField(max_length=50)
artist = models.ForeignKey(
Artist,
on_delete=models.CASCADE,
related_name='song_artist'
)
album = models.ForeignKey(
Album,
on_delete=models.CASCADE,
related_name='song_album'
)
song_length = models.TimeField()
def __str__(self):
return '{} by {} on their album {}. The song is {} long'.format(self.song_title, self.artist, self.album, self.song_length)
def get_absolute_url(self):
return reverse('subject_detail', args=[str(self.song_title)])
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment