So a number of issues have come up in the review of this feature that I'd like to summarize here.
The first boils down to feature basically being another case of an: http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch That is, the idea of a lookup matching against an instance in memory, will never completely mimic the behavior of that lookup when generating a DB query through the ORM. It is a situation where most of the common use cases can probably be handled - but there are probably a number of edge cases lurking that would add some degree of maintenance burden were this feature to land. The second issue is that this adds more code that relies on a currently imperfect lookup system. Current query_terms, and now, for predicates, matching_functions live as part of the query object - a non-public object that, in part, determines what is a valid lookup. This all could be refactored to be more associated with the fields themselves. This is mostly an internal issue, as I feel the feature could always be refactored to take advantage of improvements to the internals without changing the public API of the predicate feature. While explicit manager passing would probably no longer be required with improved internals - it could still be supported/ignored, and the explicit use of a manager is already in and of itself a pretty uncommon edge case requirement in the current implementation. For a ticket that tracks the lookup refactoring ideas, see: https://code.djangoproject.com/ticket/16187 Finally - along with the ORM mismatch issue, there exists some potential for abuse of this feature that would result in very poor performance. This is a case of: can the documentation make this clear enough that reasonable people won't shoot themselves in the foot. I'm not overly concerned about giving people enough rope to hurt themselves - but even a reasonable dev not doing any profiling could find themselves using this feature with either large arrays of instances, or with extensive conditions that follow deep relationships where the ORM and querysets would do a better job leveraging your database. Exactly where that line exists depends on too many factors to lay out out clearly in documentation. So that is an update on where this feature stands If it does not make it into 1.5 - I can probably factor out most of the improvements back into the external django-predicate package, with a couple somewhat ugly hacks to support the GIS related matches. There was some brief debate on IRC about how Django can best unearth edge case bugs in features that are candidates for inclusion into core, without the exposure that being in core offers. Thanks to everyone who has participated in the discussion so far - most of which is occurring on the PR, not the ticket: https://github.com/django/django/pull/388 -Preston On Saturday, September 22, 2012 12:55:26 PM UTC-7, ptone wrote: > > I've implemented predicate test like functionality for Q objects. > > https://code.djangoproject.com/ticket/18931 > > In brief, this lets you define a condition in a Q object and then test > whether a model instance matches the condition. > > I believe this to be a relatively complete patch, and would appreciate any > review people can offer. > > To be clear, a review of the documentation as a user is also helpful, so > don't be shy ;-) > > I'm hoping to land this for 1.5 > > Thanks, > > -Preston > > -- You received this message because you are subscribed to the Google Groups "Django developers" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-developers/-/T1mOyjTIjKUJ. 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.