Modified models, built admin panel, added data

parent ea93d87e
Christian Louis Dalmas Olivares, 193636, CSCI40-F Christian Louis Dalmas Olivares, 193636, CSCI40-F
Lab 01: Song Library Lab 02: Song Library v2
February 13, 2023 February 21, 2023
This lab has been completed truthfully myself, Christian Louis Olivares. This lab has been completed truthfully myself, Christian Louis Olivares.
Christian Louis Dalmas Olivares, February 13, 2023 Christian Louis Dalmas Olivares, February 21, 2023
\ No newline at end of file \ No newline at end of file
from django.contrib import admin 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 from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
...@@ -6,8 +6,9 @@ import django.db.models.deletion ...@@ -6,8 +6,9 @@ import django.db.models.deletion
class Migration(migrations.Migration): class Migration(migrations.Migration):
initial = True
dependencies = [ dependencies = [
('about', '0001_initial'),
] ]
operations = [ operations = [
...@@ -16,16 +17,20 @@ class Migration(migrations.Migration): ...@@ -16,16 +17,20 @@ class Migration(migrations.Migration):
fields=[ fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('album_name', models.CharField(max_length=50)), ('album_name', models.CharField(max_length=50)),
('description', models.CharField(max_length=100)),
('release_date', models.DateField()), ('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( migrations.CreateModel(
name='Artist', name='Artist',
fields=[ fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('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()), ('monthly_listeners', models.IntegerField()),
('birth_name', models.CharField(default='', max_length=50)),
('bio', models.CharField(default='', max_length=700)),
], ],
), ),
migrations.CreateModel( migrations.CreateModel(
...@@ -34,19 +39,15 @@ class Migration(migrations.Migration): ...@@ -34,19 +39,15 @@ class Migration(migrations.Migration):
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('song_title', models.CharField(max_length=50)), ('song_title', models.CharField(max_length=50)),
('song_length', models.TimeField()), ('song_length', models.TimeField()),
('album', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='about.album')), ('music_video', models.BooleanField(default=0)),
('artist', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='about.artist')), ('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( migrations.AddField(
model_name='album', model_name='album',
name='artist', 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 from django.db import migrations, models
...@@ -6,13 +6,13 @@ from django.db import migrations, models ...@@ -6,13 +6,13 @@ from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('about', '0003_alter_album_artist_alter_song_album_and_more'), ('Homepage', '0001_initial'),
] ]
operations = [ operations = [
migrations.AlterField( migrations.AlterField(
model_name='artist', model_name='song',
name='artist_name', name='song_length',
field=models.CharField(max_length=50), field=models.IntegerField(default=0),
), ),
] ]
from django.db import models 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 from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
...@@ -13,22 +13,35 @@ class Migration(migrations.Migration): ...@@ -13,22 +13,35 @@ class Migration(migrations.Migration):
operations = [ operations = [
migrations.CreateModel( migrations.CreateModel(
name='Subject', name='Album',
fields=[ fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=50)), ('album_name', models.CharField(max_length=50)),
('teacher_name', models.CharField(max_length=50)), ('release_date', models.DateField()),
('units', models.IntegerField()), ('description', models.CharField(max_length=100)),
], ],
), ),
migrations.CreateModel( migrations.CreateModel(
name='IndexCard', name='Artist',
fields=[ fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)), ('artist_name', models.CharField(max_length=50)),
('section', models.CharField(max_length=5)), ('monthly_listeners', models.IntegerField()),
('age', models.IntegerField()),
('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='about.subject')),
], ],
), ),
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 from django.db import models
from django.urls import reverse \ No newline at end of file
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