简体   繁体   English

当我删除孩子时,Django被删除了父关系

[英]Django was deleted parent relation when i delete child

I have two models: 我有两个型号:

class One(models.Model)
    name = models.CharField()

class Two(models.Model):
    one_first = models.OneToOneField(One, related_name='first', null=True, blank=True)
    one_second = models.OneToOneField(One, related_name='second', null=True, blank=True)

When I do two_instance.one_second.delete() , Django deletes the one instance (which I want), but it also deletes the two instance. 当我执行two_instance.one_second.delete() ,Django会删除一个实例(我想要的),但它也会删除这两个实例。 Why does it delete two_instance ? 为什么删除two_instance

For Django < 2.0, on_delete defaults to CASCADE . 对于Django <2.0, on_delete默认为CASCADE That means that when the two instance is deleted, the related one instance is deleted as well. 这意味着当删除two实例时,也会删除相关的one实例。

You can change this behaviour by using a different value for on_delete . 您可以通过为on_delete使用不同的值来更改此行为。 For example, you could use on_delete=models.SET_NULL , which will set the value of the one-to-one field to None when the related object is deleted. 例如,您可以使用on_delete=models.SET_NULL ,它会在删除相关对象时将一对一字段的值设置为None

In your case, you have two one-to-one fields pointing to the same model, so you need to set on_delete for both fields. 在您的情况下,您有两个指向同一模型的一对一字段,因此您需要为这两个字段设置on_delete

class Two(models.Model):
    one_first = models.OneToOneField(One, on_delete=models.SET_NULL, related_name='first', null=True, blank=True)
    one_second = models.OneToOneField(One, on_delete=models.SET_NULL, related_name='second', null=True, blank=True)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在 Django 中删除子对象时删除父对象 - Delete parent object when child object is deleted in Django Django:当孩子被删除时改变父母(单向OneToOne) - Django: Change the parent, when the child get deleted(unidirectional OneToOne) Django,如何在删除父级时不删除相关的 object(与外键相关) - Django, How to not delete related object (forignkey related) when parent is deleted Django子父模板关系 - Django child-parent template relation django模板中父子关系的树状结构 - tree structure of parent child relation in django templates 当我在Django中删除模型时,删除了什么? - What gets deleted when I delete a model in django (postgress)? Django:如何防止父 object 在删除其子 object 时被删除 - Django: how to prevent parent object to be deleted when deleting its child object 在 django 中,当 M2M 关系中删除父级时,如何从子表中删除存储父级 ID 的字符串值? - In django how to remove a string value storing parent id from child table when the parent is deleted in M2M relationship? Django - 删除外键时删除数据库条目 - Django - Delete db entry when ForeignKey was deleted 如何删除父对象的所有子对象而不用 Django 删除父对象 - How can I delete all child objects of a parent object without deleting parent object with Django
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM