Le 28 avr. 08 à 09:33, David Danier a écrit :
> >> Sometimes when calling save(), we know (for business reasons) that it >> must create a new object or raise an error. Similarly, in other >> cases, >> it either must update an existing object or raise an error. > > I think discussion about this issue has been on this list before, last > time someone suggested adding create() and update()...and keeping > save() > as an method calling these two, like: > ---------8<---------------------------------------------------- > class Model(...): > def save(self, ...): > if self.has_pk() and self.pk_exists(): > self.update() > else: > self.create() > def update(): ... > def create(): ... > ---------------------------------------------------->8--------- > > So what is the big advantage of having an new parameter in save() like > you suggested? With having create()/update() you can do similar > things. > > Additionally it would be possible to override only parts of the > save()-logic in classes extending Model (for example when needing to > calculate field-values on create, but not on insert...which is > currently > difficult). > > And, of course, you would have no problems with naming the new > parameter > and difficulties in creating self-explaining possible values ("not > must_create", rather than "must_not_create"). I'm +1 on this solution, which turns the well known pattern: def save(self): if not self.id: self.some_date = datetime.now() super(Model, self).save() to: def create(self): self.some_date = datetime.now() super(Model, self).create() BTW, create()/update() sounds more explicit to me than save(). David --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-developers@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-developers?hl=en -~----------~----~----~----~------~----~------~--~---