On Thu, 2008-11-13 at 23:47 -0500, Steve Holden wrote:
[...]
> > Maybe be you mean transparently. If so, I think this is a requirement,
> > too, but it's not a problem. We know when the ForeignKey field is
> > specified which model it refers to, so we can include the correct number
> > of database columns at table creation time. We have perfect information
> > when we create the table, which is where this differs from any generic
> > relations.
> > [...]
> Does that apply even to recursive (reflexive) relationships, when the
> related model must be specified by name rather than by reference? I
> don't know enough about the internals to be clear on that, but it seems
> like it could be problematic.

It needs to be taken into account, but it's certainly solvable and not
an obstacle to success. There are two solutions available:

(1) Postpone creating the first table until we have read the second
table so that we know the number of columns. This isn't too hard,
although it means you end up making two passes over some classes'
internals in some cases. But table creation is such a rare event and the
Python code is so fast that it's easily affordable. We're not talking
about something changing from 15 minutes to 20 minutes or anything.

(2) The poor-man's approach is "ALTER TABLE", which is a small-ish
change, but butt ugly. I prefer the former solution, but the this is the
silly drop-in I've got at the moment just to make things possible to
develop with.

Realise that the reason we have string-ified forwards references is to
avoid the need for circular imports. But at some point we'll end up
importing everything anyway and then we can go and look at the number of
required columns. This is why forwards references work in the first
place -- at a later time we go back and fix up the internal references
to point to the Python objects in question. We can change table creation
to operate similarly. It's not that hard.

Regards,
Malcolm



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to