Thanks a lot Bruno!!! 2010/9/15 bruno desthuilliers <bruno.desthuilli...@gmail.com>
> On 15 sep, 18:35, marcovic <hicsuntmarco...@gmail.com> wrote: > > Hi all, > > i'm trying to do a simple task with Django but evidently it is not so > > simple... > > It is - when you understand how things work. > > > I have my model: > > > > class Mymodel(models.Model): > > random_string = models.CharField(max_length=200) > > > > def produce_string(self): > > a = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "L", "M", > > "N", "O", "P", "Q", "R", "S", "T", "U", "V", "Z", "0", > > "1", "2", "3", "4", "5", "6", "7", "8", "9"] > > num = "" > > random.shuffle(a) > > for x in a[:8]: > > num = num + x > > self.random_string= num > > > > import string > > def random_string(): > a = list(string.uppercase + string.digits) > random.shuffle(a) > return "".join(a[:8]) > > > > > What i'd like to do is having a random string stored into my new > > object as soon as i'll create my object. To do that i've inserted this > > method into previous code: > > > > def __init__(self,*args, **kwargs): > > super(Mymodel, self).__init__(*args, **kwargs) > > self.produce_string() > > __init__ is called on the class instanciation. Your model class is > instanciated each time you load a record from the db. > > You could just use a pre_save signal and set the random_string field > if the "created" flag is True. > > def mymodel_pre_save(sender, instance, created, **kw): > if created: > instance.random_string = random_string() > > pre_save.connect(my_model_pre_save, sender=MyModel) > > > If you need to have this value set on new instances even before the > instance is saved, you can still set it in the initializer, but then > you need to test on self.pk before (assuming your using an auto_id) > > def __init__(self, *args, **kw): > super(MyModel, self).__init__(*args, **kw): > if not self.pk: > self.random_string = random_string() > > HTH > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to django-us...@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com<django-users%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.