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 Mateusz Szymanowski, 3 weeks ago

Has patch: set

comment:2 by Natalia Bidart, 3 weeks ago

Easy pickings: unset
Keywords: async added
Triage Stage: UnreviewedAccepted

Thank you Mateusz for your report! Great catch.

comment:3 by Mariusz Felisiak, 35 hours ago

Patch needs improvement: set

comment:4 by Mariusz Felisiak, 35 hours ago

Owner: changed from @… to Mateusz Szymanowski
Note: See TracTickets for help on using tickets.
Back to Top