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

时间:2018-02-20 06:33:47

标签: python django

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":

1 个答案:

答案 0 :(得分:1)

以下代码中存在两个问题:

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

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

  3. 尝试以下内容:

    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!")
    

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