Python 带有CreateView的Django IntegrityError
我正在尝试向网站添加一个功能,以添加新歌曲信息。用户填写song_form.html并尝试提交新歌后,返回IntegrityError,问题就会出现。它说NOTNULL约束失败:music\u song.album\u id。任何帮助都将不胜感激。谢谢Python 带有CreateView的Django IntegrityError,python,django,Python,Django,我正在尝试向网站添加一个功能,以添加新歌曲信息。用户填写song_form.html并尝试提交新歌后,返回IntegrityError,问题就会出现。它说NOTNULL约束失败:music\u song.album\u id。任何帮助都将不胜感激。谢谢 #models.py class Album(models.Model): album_title = models.CharField(max_length=500) artist = models.CharField(max_
#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']
你的意思是需要这张专辑吗?如果是这样,则需要将其作为字段添加到歌曲表单中,但如果不是这样,则需要将外键约束声明为可空,如下所示:
album = models.ForeignKey(Album, on_delete=models.CASCADE, blank=True, null=True)
(请记住为应用程序进行迁移,然后在更改后进行迁移)
album
是您的模型上的必填字段,但您已将其从CreateSong
表单中的字段中排除,因此出现了错误。这为什么会让您感到惊讶?您指定歌曲需要相册,但CreateSong仅包含歌曲标题和文件类型字段。我不希望用户填写相册字段。相册字段需要自动定义为album.id,但我不确定如何定义。谢谢。设置null=True确实解决了IntegrityError问题,因此该字段不是必需的。很高兴听到这个消息。如果你觉得这就是你想要的,你可以把它标记为答案,以备将来参考。