I think that will not work,when I call the obj.save() I will inevitably step again into my own save() method and the only_me wont be set as False yet, thus the same problem would occur again and again until I get the maximum depth error. I dont think thats an option, ahev you tested this solution? I am far from my box right now, so I cant test it.
Victor Lima 2010/1/15 Gabriel Reis <gabriel...@gmail.com> > Hey Victor, > > I can think that a trivial way (I am not sure if it is the best) to do that > is to overwrite the save() method of your model: > > class MyModel(models.Model): > title = models.CharField(max_length=100) > only_me = models.Boolean(default=False) > > def save(self): > if self.only_me: > only_me_true = MyModel.objects.filter(only_me=True) > for obj in only_me_true: > obj.only_me = False > obj.save() > MyModel.save(self) > > > I would go for that solution. It is easy to implement, it seems clean and > it is easy to test as well. > > Cheers dude! > > Gabriel de Carvalho Nogueira Reis > Software Developer > +44 7907 823942 > > > On Sat, Jan 16, 2010 at 12:22 AM, Victor Loureiro Lima < > victorloureirol...@gmail.com> wrote: > >> Here is the deal: >> >> class MyModel ( models.Model ): >> title = models.CharField( max_length = 100 ) >> only_me = models.BooleanField( default = False ) >> >> Question: Whats the proper way to guarantee that no matter how many >> MyModel's are available in the database, only one of them >> will have the only_me set as True? To further clarify things: In the >> admin, whenever I check the only_me checkbox, and save my model, all other >> models of this class will have to have its own only_me field set to false. >> >> As far as I know, there is no other way of doing this unless I iterate >> over all MyModel' s objects and uncheck them if they are checked, save them, >> then afterwards check the model that I am actually saving setting the >> only_me field to True. >> >> I tried doing this on the actual save() of the model, no success. >> Everytime I called save on iterated objects, I, of course, got the maximum >> recursive depth error thrown at me. >> Fair enough, I quickly thought about signals, hooking my function to >> post_save(), however I inevitabilly stumbled upon the same >> problem: When I called save() on the iterated objects the post_save signal >> got sent, I would step again in the same function, thus >> no cookie for me. >> I jumped over to overriding AdminForm' s save() method, so that I would >> iterate there on the models unchecking them if necessary, and them returning >> the proper object, but I stopped that and I said to myself that I must be >> doing something really stupid, so Im coming to you guys: What would the >> propper way of doing this? >> >> Thanks in Advance, >> Victor Lima >> >> -- >> 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<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.