gpt4 book ai didi

Django - ManyToManyRelation 中的级联删除

转载 作者:行者123 更新时间:2023-12-02 09:53:22 27 4
gpt4 key购买 nike

使用以下相关模型(一篇博客文章可以有多个修订版):

class BlogEntryRevision(models.Model):
revisionNumber = models.IntegerField()
title = models.CharField(max_length = 120)
text = models.TextField()
[...]

class BlogEntry(models.Model):
revisions = models.ManyToManyField(BlogEntryRevision)
[...]

当删除相应的 BlogEntry 时,如何告诉 Django 删除所有相关的 BlogEntryRevision?如果删除“另一”方的对象,默认情况似乎是使对象保持多对多关系。有什么方法可以做到这一点 - 最好不覆盖 BlogEntry.delete

最佳答案

我认为您误解了多对多关系的本质。你谈到“相应的BlogEntry”被删除。但ManyToMany 的全部要点是每个BlogEntryRevision 都有与其相关的多个 BlogEntries。 (当然,每个 BlogEntry 都有多个 BlogEntryRevision,但您已经知道了。)

从您使用的名称以及您想要此删除级联功能的事实来看,我认为您最好使用从 BlogEntryRevision 到 BlogEntry 的标准外键。只要您没有在该外键上设置 null=True,删除就会级联 - 当 BlogEntry 被删除时,所有修订也将被删除。

从 Django 2.0 开始

ForeignKey 初始化程序现在要求您指定 on_delete 参数:

from django.db import models
from .models import MyRelatedModel


class model(models.Model):
related_model = models.ForeignKey(MyRelatedModel, on_delete=models.CASCADE)

关于Django - ManyToManyRelation 中的级联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3937194/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com