El mié, 10-03-2010 a las 15:37 -0500, Shawn Milochik escribió:
> Every time you save(), you call makeOrder(). Every time you run
> makeOrder(), you call save(). You've introduced an infinite loop.
> Well, infinite until Python decides enough is enough.
>
Yes right.
But I need to reorder them all after each saving. If I try to reorder
while saving, It starts a new saving, ... and so on.. that means
infinitive loop.
> One simple possibility is to add an optional argument with a default
> of True to the save() override that determines whether to makeOrder().
> Just ensure that when makeOrder() calls save() that it sets that to
> False.
sorry. I couldn't do anything. makeOrder calls save for each item.
an example:
let them be first states of records.
name order
-----------------
a 10
b 20
c 30
d 40
e 50
for example when I changed 'c' to 45, because I want to insert 'c'
between 'd' and 'e'
First of all c would be set to 45,
name order
-----------------
a 10
b 20
c 45
d 40
e 50
after reordering them 10 intervals, 'd' would be set 30 and 'c' would be
set 40. So now 'c' is between 'd' and 'e' as I expected.
name order
------------------
a 10
b 20
c 40
d 30
e 50
How can I do this?
Thanks.
--
Ali
> Shawn
>
>
> Hi all,
>
> I want to override saving of one of my models.
> After saving any record, I am trying to reorder them all.
>
> class Subject(models.Model):
> slug = models.SlugField(db_index=True, unique=True)
> name = models.CharField(max_length="120")
> order = models.CharField(blank = True, max_length="3")
>
> class Meta:
> ordering = ['order']
>
> def __unicode__(self):
> return u'%s' % (self.name)
>
> def __str__(self):
> return self.__unicode__()
>
> def save(self, *args, **kwargs):
> super(Subject, self).save(*args, **kwargs)
> self.makeOrder()
>
> def makeOrder(self):
> t = 10
> for i in Subject.objects.all().order_by('order'):
> i.order = t
> i.save()
> t += 10
>
>
> But here, It fails in a loop and give "maximum recursion depth
> exceeded"
> error.
>
> How can I do?
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.