Hi,

I'd like to defer calculating a value for a particular field until the
value is required.

Suppose I have these models:

class Fruit(models.Model):
    # various fields

class FruitBasket(models.Model):
    fruit = models.ManyToManyField(Fruit)

I'd like to add a "most_nutritious" field to FruitBasket that is a
ForeignKey to a fruit object, which will represent the most nutritious
fruit in the basket. But determining which fruit is the most
nutritious is expensive, so I'd like to only set a value for this if
it's required. But if I do compute a value, I want to store it in the
database so that I don't have to re-compute every time.

Ideally, I'd like to do something like this:

most_nutritious = models.LazyField(default=None,
compute=some_callable)

Whenever a FruitBasket is loaded, if the raw value of
"most_nutritious" is None, some validator computes the identity of the
most nutritious fruit, saves it, and pretends the value was always
there. If it's not None, the validator just returns the value
unmodified.

I think I'd know how to implement this if calculating the final value
did not depend on the value of other columns. My problem is that
to_python methods & co. are not (to my knowledge) given access to the
model instance being loaded/saved -- just the column value.)

Any thoughts?

Thanks!
Ori

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@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