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 -~----------~----~----~----~------~----~------~--~---