- Timestamp:
- 04/26/25 08:25:45 (3 weeks ago)
- Branches:
- master
- Children:
- bfca48b
- Parents:
- d7662b5
- Location:
- music
- Files:
-
- 2 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
music/models.py
rd7662b5 r0e077ef 163 163 def __str__(self): 164 164 return f"{self.playlist} - {self.track}" 165 166 167 #VIEWS168 169 class tracks_count_per_genre(models.Model):170 genre = models.CharField(max_length=20, blank=True, null=True)171 count = models.IntegerField(blank=True, null=True)172 173 class Meta:174 db_table = 'tracks_count_per_genre'175 managed = False176 177 def __str__(self):178 return f"{self.genre} - {self.count}" -
music/tests.py
rd7662b5 r0e077ef 8 8 django.setup() 9 9 10 from music.models import Artist11 artists = Artist.objects.raw('SELECT * FROM music_artist')12 for artist in artists:13 print(artist.name) -
music/urls.py
rd7662b5 r0e077ef 5 5 path('album/', views.album_list, name='album_list'), 6 6 path('artist/', views.artist_list, name='artist_list'), 7 path('artist/avg_track_duration', views.avg_track_duration, name='avg_track_duration'), 7 8 path('track/', views.track_list, name='track_list'), 8 9 path('track/per_genre', views.tracks_count_per_genre, name='track_count_per_genre'), 10 path('customer/rank_list', views.rank_list_most_active_customers, name='rank_list_most_active_customers'), 9 11 ] -
music/views.py
rd7662b5 r0e077ef 15 15 heading = request.GET.get('model', 'All Albums') 16 16 data = Album.objects.values_list('title', flat=True) 17 return render(request, ' album_list.html', {'data': data, 'heading': heading})17 return render(request, 'list.html', {'data': data, 'heading': heading}) 18 18 19 19 … … 21 21 heading = request.GET.get('model', 'All Tracks') 22 22 data = Track.objects.values_list('name', flat=True) 23 return render(request, ' album_list.html', {'data': data, 'heading': heading})23 return render(request, 'list.html', {'data': data, 'heading': heading}) 24 24 25 25 26 def artist_list(request): 27 heading = request.GET.get('model', 'All Artists') 28 data = Artist.objects.values_list('name', flat=True) 29 print(data) 30 return render(request, 'list.html', {'data': data, 'heading': heading}) 31 32 33 # VIEWS 26 34 def tracks_count_per_genre(request): 27 35 with connection.cursor() as cursor: … … 35 43 36 44 37 def artist_list(request): 38 heading = request.GET.get('model', 'All Artists') 39 data = Artist.objects.values_list('name', flat=True) 45 def avg_track_duration(request): 46 with connection.cursor() as cursor: 47 cursor.execute("SELECT * FROM avg_track_duration_per_artist;") 48 rows = cursor.fetchall() 49 50 data = [{'artist': row[0], 'avg': row[1]} for row in rows] 40 51 print(data) 41 return render(request, 'album_list.html', {'data': data, 'heading': heading}) 52 53 return render(request, 'avg_track_duration.html', {'data': data}) 54 55 56 def rank_list_most_active_customers(request): 57 with connection.cursor() as cursor: 58 cursor.execute("SELECT * FROM rank_list_most_active_customers_view;") 59 rows = cursor.fetchall() 60 61 data = [{'name': row[0], 'total_orders': row[1], 'total_money_spent': row[2]} for row in rows] 62 63 return render(request, 'rank_list_most_active_customers.html', {'data': data})
Note:
See TracChangeset
for help on using the changeset viewer.