我正在编写一个小型音乐数据库。学习 SQL 已经很久了,我一直想尝试一下 Django。但有一件事我无法理解。
现在,我的模型只包含两个类,Album
和 Song
。
Song
有一个外键指向它所属的专辑。现在,如果我要删除那个 Album
,所有“属于”它的 Song
都会由于级联效应而被删除。
专辑在我的数据库中有点虚拟,只有歌曲在文件系统上实际表示并且专辑是根据歌曲标签构建的,因此我只能知道如果没有更多歌曲指向专辑则不再存在它(因为它们不再存在于文件系统中)。
或者简而言之,如何实现反向级联,也就是说,如果没有更多歌曲指向专辑,则该专辑也应该被删除?
最佳答案
您可以使用 pre_delete
当歌曲被删除并且没有更多歌曲时,发出删除专辑的信号。
from yourapp.models import Album, Song
from django.db.models.signals import pre_delete
def delete_parent(sender, **kwargs):
# Here you check if there are remaining songs.
....
pre_delete.connect(delete_parent, sender=Song)
关于python - 级联的反向等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5185563/