如何在不使用 Django 中的 DeleteView 的情况下从我的专辑列表中删除特定歌曲并编辑歌曲信息?



models.py这是我的专辑和歌曲类的视图文件。

class Album(models.Model):
artist = models.CharField(max_length=250)
album_title = models.CharField(max_length=500)
genre = models.CharField(max_length=250)
album_logo = models.FileField()
def __str__(self):
return self.album_title + '-' + self.artist
class Song(models.Model):
song = models.ForeignKey(Album, on_delete=models.CASCADE)
file_type = models.CharField(max_length =10)
song_title = models.CharField(max_length=250)
#is_favorite = models.BooleanField(default=False)
def __str__(self):
return self.song_title 

views.py这是我删除歌曲的视图文件

def delete_songs(request, album_id):
if request.method == "GET":

下面的代码中有两个问题:

def delete_songs(request, album_id):
if request.method == "GET":
  1. 您正在提供album_id,但您没有尝试删除相册。您应该提供song_id,以便您可以删除歌曲。

  2. 您正在检查请求是否为 GET,但您应该检查请求是否为 POST。每次要添加、更新或删除数据库中的条目时,都应始终检查 POST 请求。

尝试如下操作:

from django.http import HttpResponse
def delete_song(request, song_id):
if request.method == "POST":
song = Song.objects.get(id=song_id)
song.delete()
return HttpResponse("Song deleted successfully!")

如果要删除整个相册,则应使用其他视图。

最新更新