﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
35478	GenericRelation always deletes the related objects when a model object is deleted	Brandon	nobody	"Is there a reason why when using GenericRelation a behaviour like on_delete=models.CASCADE is forced?
I've looked at the code for GenericRelation and [[https://github.com/django/django/blob/4.2.13/django/contrib/contenttypes/fields.py#L333|on_delete is forced to models.CASCADE]] but [[https://github.com/django/django/blob/4.2.13/django/contrib/contenttypes/fields.py#L290|GenricRel forces it to DO_NOTHING]] anyway.

Either way on_delete seems to be totally ignored because the related objects are part of [[https://github.com/django/django/blob/4.2.13/django/db/models/deletion.py#L369|_meta.private_fields]] and are deleted anyway.

The only way I've found to avoid this is to create a custom queryset like this


{{{#!python
class MyQuerySet(models.QuerySet):
    def delete():
        pass
    def _raw_delete():
        return 0

class MyModel(models.Model):
    content_type = models.ForeignKey(ContentType, on_delete=models.SET_NULL, null=True)
    object_id = models.PositiveIntegerField(null=True)
    content_object = GenericForeignKey('content_type', 'object_id')

    objects = models.Manager.from_queryset(MyQuerySet)()

    class Meta:
       base_manager_name = ""objects""
}}}
"	Uncategorized	closed	contrib.contenttypes	4.2	Normal	duplicate	genericrelation genericforeignkey on_delete	Brandon	Unreviewed	0	0	0	0	0	0
