And*_*Dog 18 django many-to-many cascading-deletes
使用以下相关模型(一个博客条目可以有多个修订版):
class BlogEntryRevision(models.Model):
revisionNumber = models.IntegerField()
title = models.CharField(max_length = 120)
text = models.TextField()
[...]
class BlogEntry(models.Model):
revisions = models.ManyToManyField(BlogEntryRevision)
[...]
Run Code Online (Sandbox Code Playgroud)
如何在删除BlogEntryRevision
相应的内容时告诉Django删除所有相关的s BlogEntry
?如果删除了"其他"端的对象,则默认似乎是将对象保持为多对多关系.有什么方法可以做到这一点 - 最好不要超越BlogEntry.delete
?
Dan*_*man 14
我认为你误解了ManyToMany关系的本质.你谈到被删除的"相应的BlogEntry".但是,ManyToMany的重点在于每个BlogEntryRevision都有多个与之相关的BlogEntries.(当然,每个BlogEntry都有多个BlogEntryRevisions,但你已经知道了.)
从您使用的名称,以及您想要删除级联功能的事实来看,我认为使用BlogEntryRevision到BlogEntry的标准ForeignKey会更好.只要您没有设置null=True
该ForeignKey,删除就会被删除 - 当BlogEntry被删除时,所有修订也将被删除.
jes*_*eng 13
我今天有这个确切的用例:
为此,我使用的是ManyToManyRelationship.
我的用例是:如果我删除特定作者的最后一个条目,那么也应该删除该作者.
可以使用以下pre_delete
信号实现解决方案:
@receiver(pre_delete, sender=Entry)
def pre_delete_story(sender, instance, **kwargs):
for author in instance.authors.all():
if author.entries.count() == 1 and instance in author.entries.all():
# instance is the only Entry authored by this Author, so delete it
author.delete()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16168 次 |
最近记录: |