I just wanted to mention that I am wrapping up a new Django site after 7 
months of development.  It will be used to manage subscriptions for a 
magazine published by a Norwegian university.  So far it does not have a 
public interface so I won't give out the link here (all you would see is 
a log-in screen anyway).

So why am I posting this then?   I just want to make a few comments 
about Django from the perspective of someone who has learned Django well 
enough to implement a serious site and who has also had experience with 
competing products.  I will not mention other products because I don't 
think that would be useful here.  In fact, I will limit my comments to 
just the following:


1.  Django is a fantastic framework.  I personally believe that this is 
because some very talented developers have made some very good choices, 
including the programming language, Python.

2.  I am very much looking forward to the new forms module.  It is 
needed, and I am confident that it will be implemented well because just 
about everything else so far has been done well.

3.  My only serious request involves the DB API.  The Django ORM is 
simply too limiting.  I was not able to do what I wanted without jumping 
through hoops.  I was forced to use the:

    extra( where=..., params=..., tables=...)

QuerySet method often, and found that when this method is combined with 
the other QuerySet methods (filter, exclude, ...) the combined SQL query 
generated by Django often did not do what was expected.  In short, my 
feeling is that the Django ORM *must* be improved to handle more general 
query requirements, especially more sophisticated JOINs across any 
number of tables.  A complex database often requires complex queries, 
and it is not possible to reduce such queries to a form that can be 
expressed with the current simple Django ORM.

In *addition*, I hope that the Django SQLAlchemy branch is successful in 
its attempt provide a more sophisticated ORM for Django developers.  But 
this must be done in *addition* to improving Django's default ORM.  If 
Django's default ORM cannot be improved beyond its current state, then I 
would vote for removing it as the default ORM and replacing it with 
something more capable.  I would retract this recommendation if the new 
SQLAlchemy branch is fully compatible with the current Django ORM - I 
have not heard enough about this new branch to know if this is a design 
goal or not.

The Django ORM is probably the only piece of Django I am embarrassed 
showing other developers.  Of course, I am referring here to the cases 
where the default QuerySet ORM methods are not sufficient for expressing 
the necessary queries - for simple cases, the default Django ORM is elegant.

I realize that many people are probably happy with the default ORM 
because not all applications have serious database requirements, but for 
me it is the single most limiting feature of Django.  I will not be 
satisfied if the current ORM is capable of fulfilling 95% requirements 
if the last 5% requires several days of additional pain (and sluggish 
results). 

Dropping down to raw SQL does not solve the problem because using raw 
SQL with existing QuerySets and then generating new QuerySets is awkward 
and slow for large QuerySets (the usual "impedance-mismatch" between the 
relational-model and the object-model).  Perhaps the Django developers 
can provide some general tools for integrating arbitrary SQL with Django 
QuerySets, since it will still surely be necessary to drop down to raw 
SQL occasionally even with an improved ORM.


That is my 2 cents. 

I would like to finish by encouraging the Django developers to continue 
in the same direction they have started.  I will continue to use Django 
wherever it is suitable for the job - and I am confident that will be often!

Jeffrey


--~--~---------~--~----~------------~-------~--~----~
 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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to