使用CreateView进行Django IntegrityError

时间:2018-04-18 14:54:14

标签: python django

我正在尝试向网站添加功能以添加新的歌曲信息。在用户填写song_form.html并尝试提交新歌曲并返回IntegrityError之后,会出现问题。它说NOT NULL约束失败:music_song.album_id。任何帮助,将不胜感激。感谢。

#models.py
class Album(models.Model):
    album_title = models.CharField(max_length=500)
    artist = models.CharField(max_length=250)
    genre = models.CharField(max_length=50)
    album_cover = models.FileField()

    def __str__(self):
        return self.album_title

    def get_absolute_url(self):
        return reverse('music:detail', kwargs={'pk': self.pk})


class Song(models.Model):
    album = models.ForeignKey(Album, on_delete=models.CASCADE)
    song_title = models.CharField(max_length=250)
    file_type = models.CharField(max_length=50)

    def __str__(self):
        return self.song_title

#views.py
class CreateSong(generic.CreateView):
    model = Song
    fields = ['song_title', 'file_type']

1 个答案:

答案 0 :(得分:0)

你的意思是要求专辑吗?如果是这样,你需要将它作为一个字段添加到你的歌曲表单中,但如果没有,你需要将你的外键约束声明为可为空:如下所示:

album = models.ForeignKey(Album, on_delete=models.CASCADE, blank=True, null=True)

(记得为应用程序进行迁移,然后在更改后进行迁移)