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.

Reply via email to