- Timestamp:
- 04/28/25 17:55:59 (4 weeks ago)
- Branches:
- master
- Children:
- 611686e
- Parents:
- bfca48b
- Location:
- music
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
music/urls.py
rbfca48b r17ed1da 9 9 path('artist/most-popular', views.rank_list_artists, name='rank_list_artists'), 10 10 path('track/', views.track_list, name='track_list'), 11 path('customer/genre', views.most_listened_genre_per_customer, name='most_listened_genre_per_customer'), 11 path('customer/genres-per-customer', views.genres_per_customer, name='genres_per_customer'), 12 path('customer/most-popular-genre-per-customer', views.most_listened_genre_per_customer, name='most_listened_genre_per_customer'), 12 13 path('media-type/percentage', views.media_type_percentage, name='media_type_percentage'), 13 14 path('track/per-genre', views.tracks_count_per_genre, name='track_count_per_genre'), -
music/views.py
rbfca48b r17ed1da 84 84 85 85 86 87 86 def media_type_percentage(request): 88 87 with connection.cursor() as cursor: … … 103 102 104 103 return render(request, 'most_listened_genre_per_customer.html', {'data': data}) 104 105 106 def genres_per_customer(request): 107 customers = Customer.objects.all() 108 selected_customer_id = request.GET.get('customer_id') 109 data = [] 110 111 if selected_customer_id: 112 query = """ 113 SELECT c.first_name as first_name, c.last_name as last_name, g.name as genre, COUNT(tr.track_id) as track_count 114 FROM customer c 115 LEFT JOIN invoice i ON c.customer_id = i.customer_id 116 LEFT JOIN invoice_line il ON i.invoice_id = il.invoice_id 117 LEFT JOIN track tr ON il.track_id = tr.track_id 118 LEFT JOIN genre g ON tr.genre_id = g.genre_id 119 WHERE c.customer_id = %s 120 GROUP BY c.customer_id, c.first_name, c.last_name, g.genre_id, g.name 121 ORDER BY c.first_name 122 """ 123 124 with connection.cursor() as cursor: 125 cursor.execute(query, [selected_customer_id]) 126 rows = cursor.fetchall() 127 data = [{'first_name': row[0], 'last_name': row[1], 'genre': row[2], 'track_count': row[3]} for row in rows] 128 129 130 return render(request, 'genres_per_customer.html', { 131 'customers': customers, 132 'data': data, 133 'selected_customer_id': selected_customer_id, 134 })
Note:
See TracChangeset
for help on using the changeset viewer.