我正在编写一个小型音乐数据库。学习 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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1623 次 |
| 最近记录: |