Поле возвращает значение null, даже если оно содержит значение
При создании нового объекта (музыкального трека) я указываю в одном из полей название плейлиста. Однако после сохранения данных из формы значение поля playlist во фронтенде равно null, хотя в панели администратора значение этого поля есть. Я не понимаю, как я могу получить текстовое значение имени поля (плейлист), которое я указываю при создании, во фронтенде оно всегда равно null.
models.py:
class Composition(models.Model):
title = models.CharField(max_length=500)
artist = models.CharField(max_length=500)
playlist = models.ForeignKey('PlayList', on_delete=models.CASCADE, blank=False)
time_length = models.DecimalField(blank=True, max_digits=20, decimal_places=2)
audio_file = models.FileField(validators=[validate_is_audio])
cover_image = models.ImageField()
def save(self, *args, **kwargs):
if not self.time_length:
audio_length = get_audio_length(self.audio_file)
self.time_length = audio_length
return super().save(*args, **kwargs)
class PlayList(models.Model):
name = models.CharField(max_length=500)
мои взгляды
def addSong(request):
form = AddCompositionForm()
if request.POST:
form = AddCompositionForm(request.POST, request.FILES)
if form.is_valid():
instance = form.save(commit=False)
playlist = form.cleaned_data.get('playlist')
music_playlist = PlayList.objects.get_or_create(name=playlist)
instance.playlist = music_playlist[0]
instance.save()
return redirect("music_player:home_page")
return render(request, 'addSong.html', {
'form': form
})
функция фронтенда:
const setSRC = () => {
player.src = `{{ MEDIA_URL }}/${musics[compositionIndex].audio_file}`
song_title.textContent = musics[compositionIndex].title
artist.textContent = musics[compositionIndex].artist
music_img.setAttribute('src', `{{ MEDIA_URL }}/${musics[compositionIndex].cover_image}`)
if (musics[compositionIndex].playlist != null) {
// PLAYLIST ALWAYS == null, why??
playlist_name.textContent = musics[compositionIndex].playlist
} else {
playlist_name.textContent = "Single"
}
}
значение в панели администратора:
значение в javascript:
Все поля, кроме списка воспроизведения, не равны null и работают правильно.
Вы должны вернуть name
список воспроизведения в самой модели PlayList
, используя метод __str__()
так:
class PlayList(models.Model):
name = models.CharField(max_length=500)
def __str__(self):
return f"{self.name}"