Задать вопрос
@bielikovv

Как вывести аудиофайл из ManyToManyField?

Имею модель плейлистов, в которой есть связь manytomany моделью песен. Изначально обращаюсь к определенному плейлисту через метод get во вьюхе. Далее обращаюсь к этому плейлисту и получаю все песни этого плейлиста через playlist.song.all(). В шаблоне какие-то проблемы с выводом. Пробовал и обрамлять в теги if, ошибка скорее всего в цикле. Укажите мне на нее пожалуйста

views.py
def show_playlist(request, playlist_id):
    playlist = Playlists.objects.get(pk=playlist_id)
    songs = playlist.song.all()
    return render(request, 'musiccloud/current_playlist.html', {'playlist':playlist, 'songs':songs})


models.py
class Playlists(models.Model):
    user = models.ForeignKey(User, on_delete=models.PROTECT, verbose_name='Пользователь', null=True)
    title = models.CharField(max_length=128, verbose_name='Название Плейлиста')
    envelope = models.ImageField(verbose_name='Обложка плейлиста', upload_to='photo/%Y/%m/%d')
    date_playlist = models.DateField(auto_now_add=True, verbose_name='Дата создания плейлиста')
    song = models.ManyToManyField('Music', verbose_name='Песня', blank=True, null=True)

    def __str__(self):
        return self.title

class Music(models.Model):
    photo = models.ImageField(verbose_name='Обложка', upload_to='photo/%Y/%m/%d', blank=True)
    title = models.CharField(max_length=455, verbose_name='Название', default='Без названия', blank=True)
    person = models.CharField(max_length=255, verbose_name='Исполнитель', default='Неизвестный исполнитель', blank=True)
    file = models.FileField(verbose_name='Песня', upload_to='audio')
    album = models.ForeignKey(Album, verbose_name='Альбом', blank=True, on_delete=models.CASCADE, null=True)
    date_song = models.DateField(auto_now_add=True, verbose_name='Дата релиза песни', null=True)

    def __str__(self):
        return self.title


Кусок шаблона html
<div class="container">
    <div class="row">
        <div id="music-current-card" class="music-current-card">
            <div class="card-body">
                <div id="playlist-current-card" class="playlist-card">
                    <h1 class="card-title">{{ playlist.title }}</h1>
                    {% if playlist.envelope %}
                    <img id="envelope-current-playlist" src="{{ playlist.envelope.url }}">
                    {% endif %}
                    {% for music in songs %}
                    <audio src="{{ music }}"></audio>
                    {% endfor %}
                </div>
            </div>
        </div>
    </div>
</div>
  • Вопрос задан
  • 53 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы