Opened 5 years ago
Closed 5 years ago
#31474 closed Cleanup/optimization (fixed)
QuerySet.Delete - inconsistent result when zero objects deleted
Reported by: | Adi Gabaie | Owned by: | Hasan Ramezani |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 2.2 |
Severity: | Normal | Keywords: | querySet Delete counter |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description
The result format of the QuerySet.Delete method is a tuple: (X, Y)
X - is the total amount of deleted objects (including foreign key deleted objects)
Y - is a dictionary specifying counters of deleted objects for each specific model (the key is the _meta.label of the model and the value is counter of deleted objects of this model).
Example: <class 'tuple'>: (2, {'my_app.FileAccess': 1, 'my_app.File': 1})
When there are zero objects to delete in total - the result is inconsistent:
- For models with foreign keys - the result will be: <class 'tuple'>: (0, {})
- For "simple" models without foreign key - the result will be: <class 'tuple'>: (0, {'my_app.BlockLibrary': 0})
I would expect there will be no difference between the two cases: Either both will have the empty dictionary OR both will have dictionary with model-label keys and zero value.
Change History (6)
comment:1 by , 5 years ago
Type: | Uncategorized → Bug |
---|
comment:2 by , 5 years ago
Easy pickings: | set |
---|
comment:3 by , 5 years ago
Triage Stage: | Unreviewed → Accepted |
---|---|
Type: | Bug → Cleanup/optimization |
comment:4 by , 5 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
I guess we could adapt the code not to include any key if the count is zero in the second case.