Per my patches and what I believe Malcom has done with qsrf, the syntax for related fields was field__related__name, and yes, you would repeat this over and over, but it keeps it consistant.
I would like a values-like method to return partial objects, and then requesting any field thats not "filled" would hit the db in some fashion, but that's another story. On Feb 15, 3:42 am, Dima Dogadaylo <[EMAIL PROTECTED]> wrote: > On 15 Feb, 12:30, Malcolm Tredinnick <[EMAIL PROTECTED]> wrote: > > > When Adrian > > proposed that API, he realised that almost always you're going to be > > pulling back all of the fields or almost all of them. Once a database > > has read a row to access some of the data, accessing all of the data in > > the row is close to zero overhead. It's already had to read the block > > off disk, for example, which is many kilobytes in size. Only for either > > extremely large fields or for fields that need a large amount of > > post-processing to be useful (such as polygon fields) is it really a win > > to micro-manage what is pulled that. > > > For most non-trivial SQL queries with modern databases, constructing > > (extracting) the output columns, unless they are complex computations, > > is a very small fraction of the timeslice devote to the query execution. > > It's true but not all true. > > Often it's have sense to exclude even small non-used fields, because > when you do joins with GROUP BY or similar for final 100 rows you may > have temporary in-memory or even disc-table from 100*100 rows and size > of each rows really matters. > > Then not only db-stage consume resources, but also network bandwidth > is consumed, python database adapter consumes a lot on converting raw > char stream to never used python objects, memory is wasted. It's > extremely important on limited VPS-hostings. > > However, IMHO such technical details isn't important because ORM > should not assume that things are "good enough". With ideal ORM I > should be able to do _all_ that I can do with raw SQL. Everyone needs > are special, same ORM will be good for small project but unacceptable > for big project if ORM assumes that "this" and "those" limitations are > acceptable for all. > > >> That's why the API is to specify what to exclude, rather than what to > > include. I tend to agree with the proposal, too. From a performance > > management perspective, it's going to be easier to use that way. > > I agree that in many cases exclude() may be useful and probably it's > worth to add it also, but as I already wrote in my blog post, this > patch come from real experience when you don't have "tutorial-like" > models and when there is conscious data redundancy in many tables. > It's typical task to show object_list and object_detail for any model > and for each object_list I know exactly what fields I need and usually > it's 3-5 fields from model itself and 2-3 fields from related models. > I strongly believe that API should give me ability to receive only > those fields even if all database severs will work with speed of > light. > > > This isn't "standard Django lookup syntax", though. It's some entirely > > new lookup syntax you created. There's nowhere in the current lookup > > hierarchy that uses this method for referring to fields in another > > model. Reusing the existing syntax makes more sense. It's less for > > people to learn and it's less restrictive: with the double-underscore > > syntax, I can list the fields in any order, since they're all positional > > arguments. Your syntax has normal fields as positional arguments (so > > they must come first) and related fields as keyword arguments that take > > a sequence. > > I sure you know Django lookup syntax much better than me, but IMHO > your proposition violates DRY, because if I need to select several > fields from related model I need to repeat and repeat > "user__address__fieldname". Your proposition is close to original SQL > syntax of SELECT statement and due to this issue your proposition > should be accepted probably even if it violates DRY but keeps > conceptual integrity with underlaying SQL level. > > I think it's only several lines task to change syntax from > fields(*fields, **related_fields) to fields(*args). So if sometimes > core developers change own mind about fields() method I can add to my > patch plain lookup syntax support. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---