[Django] #33500: Django ORM bug

9 views
Skip to first unread message

Django

unread,
Feb 7, 2022, 6:58:10 AM2/7/22
to django-...@googlegroups.com
#33500: Django ORM bug
-------------------------------------+-------------------------------------
Reporter: Bobosher | Owner: nobody
Type: Bug | Status: new
Component: Database | Version: 3.2
layer (models, ORM) |
Severity: Normal | Keywords:
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
I have overloaded delete() method of my model to enable soft deletion so
that delete() method just sets is_deleted field to be true and calls
build-in save() method.
It's working fine against individual model objects:
{{{
my_object = MyModel.objects.get(id=1)
my_object.delete() # Works fine, the object isn't actually deleted.
}}}

But when I called delete() method directly for a queryset, it just hard-
deleted those objects included in the queryset:
{{{
some_objects = MyModel.objects.filter(id__lte=10)
some_objects.delete() # Those objects are actually deleted from the
database.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/33500>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Feb 7, 2022, 7:00:10 AM2/7/22
to django-...@googlegroups.com
#33500: Django ORM bug: overloading delete() method of models

-------------------------------------+-------------------------------------
Reporter: Bobosher | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 3.2
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

--
Ticket URL: <https://code.djangoproject.com/ticket/33500#comment:1>

Django

unread,
Feb 7, 2022, 7:08:30 AM2/7/22
to django-...@googlegroups.com
#33500: Django ORM bug: overloading delete() method of models
-------------------------------------+-------------------------------------
Reporter: Bobosher | Owner: nobody
Type: Bug | Status: closed

Component: Database layer | Version: 3.2
(models, ORM) |
Severity: Normal | Resolution: invalid
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Mariusz Felisiak):

* status: new => closed
* resolution: => invalid


Comment:

`Model.delete()` is not called when deleting objects in bulk using
`QuerySet.delete()`, see
[https://docs.djangoproject.com/en/stable/topics/db/models/#overriding-
model-methods "Overriding predefined model methods"] for more details.

--
Ticket URL: <https://code.djangoproject.com/ticket/33500#comment:2>

Django

unread,
Feb 7, 2022, 8:12:01 AM2/7/22
to django-...@googlegroups.com
#33500: Django ORM bug: overloading delete() method of models
-------------------------------------+-------------------------------------
Reporter: Bobosher | Owner: nobody
Type: Bug | Status: closed
Component: Database layer | Version: 3.2
(models, ORM) |
Severity: Normal | Resolution: invalid
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Bobosher):

Replying to [comment:2 Mariusz Felisiak]:


> `Model.delete()` is not called when deleting objects in bulk using
`QuerySet.delete()`, see
[https://docs.djangoproject.com/en/stable/topics/db/models/#overriding-
model-methods "Overriding predefined model methods"] for more details.

Thank you a lot.

--
Ticket URL: <https://code.djangoproject.com/ticket/33500#comment:3>

Reply all
Reply to author
Forward
0 new messages