Opened 3 weeks ago
Last modified 35 hours ago
#36888 assigned Bug
acreate method doesn't call asave
| Reported by: | Mateusz Szymanowski | Owned by: | Mateusz Szymanowski |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | 6.0 |
| Severity: | Normal | Keywords: | acreate asave async |
| Cc: | Mateusz Szymanowski | Triage Stage: | Accepted |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | yes |
| Easy pickings: | no | UI/UX: | no |
Description
acreate doesn't call asave method.
When you use async Django methods and you want to add custom logic in asave method, when you create your object with acreate, it doesn't call your asave method.
class SimpleModel(models.Model):
field = models.IntegerField()
async def asave(self, *args, **kwargs):
self.field += 1
await super().asave(*args, **kwargs)
obj = await SimpleModel.objects.acreate(field=4)
obj.field # returns 4, should be 5
When you run create, it calls save().
Change History (4)
comment:1 by , 3 weeks ago
| Has patch: | set |
|---|
comment:2 by , 3 weeks ago
| Easy pickings: | unset |
|---|---|
| Keywords: | async added |
| Triage Stage: | Unreviewed → Accepted |
comment:3 by , 35 hours ago
| Patch needs improvement: | set |
|---|
comment:4 by , 35 hours ago
| Owner: | changed from to |
|---|
Note:
See TracTickets
for help on using tickets.
Thank you Mateusz for your report! Great catch.