django calls validate_unique twice - workaround? -
i understand validate_unique called when doing full_clean, in turn called when calling modelform.save() - means validate_unique won't automatically called when doing model_instance.save()
eg. see answer: https://stackoverflow.com/a/14472335/996792
i do want call validate_unique when calling model_instance.save i've overridden model's save function follows:
def save(self, *args, **kwargs): self.validate_unique() super(mymodel, self).save(*args, **kwargs) however, produces following quirk: when saving modelform (eg. in admin), validate_unique called twice! presumably once modelform.save() , once model.save().
is there anyway round inefficiency?
i detest unnecessary cruft , sort of thing bothers me.
this possible workaround:
clean( method called when request comes modelform, set flag when method called:
def clean( self ): self.clean_called = true #<---- flag. #other model checks overwrite save( order call validate_unique if flag not set. don't forget remove flag.
def save(self, *args, **kwargs): flag_is_set = hasattr( self, 'clean_called' ) , self.clean_called if not flag_is_set: self.validate_unique() super(mymodel, self).save(*args, **kwargs) self.clean_called = false
Comments
Post a Comment