I am creating some music app. I have "Track" model, and I want to let user create playlist, that can contain multiple Tracks. My searching didn't help me to do it. (Also one Track can be used in multiple playlists, for example Track "XXX" can be used in playlist "YYY" and in playlist "ZZZ").
Here's models.py:
from django.db import models
from django.contrib.auth.models import User
from .validators import *
#Model that accutaly contains user's tracks/songs
class Track(models.Model):
title = models.CharField(max_length=40, null=True)
description = models.CharField(max_length=500, null=True)
author = models.ForeignKey(User, default=None, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
miniature = models.ImageField(upload_to='images/track', default="defaults/default.png", validators=[validate_miniature_file_extension])
audio_or_video = models.FileField(upload_to='audio_and_video/', default="file_not_found", validators=[validate_track_file_extension])
#Model that contains playlists
class Playlist(models.Model):
title = models.CharField(max_length=40, null=True)
description = models.CharField(max_length=500, null=True)
author = models.ForeignKey(User, default=None, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
miniature = models.ImageField(upload_to='images/playlist', default="defaults/default.png", validators=[validate_miniature_file_extension])
Tracks = models.ForeignKey(Track, default=None, on_delete=models.CASCADE) # I tried this, but it won't work at all because it can contain only one Track