I use a bunch of hacks and monkey patches to make ORM master. So I consider a proper cleanup very valuable. This one for example for more efficient pickling: https://gist.github.com/974735
On 10 окт, 03:28, Anssi Kääriäinen <anssi.kaariai...@thl.fi> wrote: > First, if you have time for it, please take a look of #17025 (sql/ > WhereNode refactoring). In summary: test suite is 10% faster, creating > a simple objects.filter(pk=1) query is 30% faster, chained .filter() > calls can be multiple times faster and so on. The code is IMHO > cleaner. And it is much better documented. The patch is WIP, but > please try it on real world queries (especially if you have problems > with queryset cloning) and see if it makes any speed difference. And > of course if you can break it. > > Now, for the topic of the post. I have worked quite intensively (some > might say too intensively) around different issues in the ORM for the > last couple of weeks, and my take is that while the code in general > makes mostly sense and it is clear that it had a good design to start > with, it has slowly bitrotted into a situation where it is nearly > impossible to understand it. Case in point, take a look of add_q pre > and post #17025 patch. Can you tell from the pre-version what is done > and why? > > I would like to work on refactoring the ORM. This would be slow work, > one piece at a time, not a total rewrite. I think there is much > potential in the ORM. It needs to be cleaned first, and then we can > get hacking new and awesome features. I know there are other people > interested in this, too. > > For example I have been thinking for some time about something like > F() objects, but which could contain arbitrary SQL and references to > fields in the query. relabel_aliases and cloning would be handled for > you. These could be used in .order_by(), values_list, annotate() and > so on. SQLSnippet could be its name. This would allow us to > deprecate .extra, and would allow for some really fancy extensions. > > Using these you could implement an external SQL snippets library, the > PostgreSQL window functions in one library for example. Or custom > aggregate ModelAggregate (fetch related models using array_agg, > something like prefetch_related, but runs in single SQL query). I > really do believe this is possible. > > But we need to get the work started on refactoring the ORM first. I do > currently have some extra time, and I am willing to work on the ORM. > But we need some people reviewing the patches and most of all we need > core developers who have enough time to review and commit the ready > patches. Unfortunately the ORM-knowing core developers seem to be > really busy. > > I really do not know how to move forward. I guess I am asking all you > what do you think should be done with the ORM. We could take a > completely opposite direction and make it a wrapper around SQLAlchemy > (I saw this mentioned somewhere some time ago). Or decide that the ORM > is just fine now, or that there are higher importance items. Before > continuing my hacking, it would be nice to know if there is support > for ORM refactoring. > > Thank you for your time, > - Anssi Kääriäinen -- 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 django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.