Не всегда всë просто и симпатично. Снаружи она очень клëвая, а внутри — очень сложная. Ну, это ожидаемо для фреймворков/библиотек такого уровня, но иногда прозреваю всë равно. :)
> с чего вдруг ленивыми == не вытащит? вытиащи но у вас будет пеформанс хит при обращении.
Не вытащит — в плане они не будут у меня, это будет еще один запрос (ну, не один, десяток).
> все равно это проще чем та кверя, что привели вы. обратный джойн работает, да
Да не, не проще. Особенно учитывая, что у меня в ipython'e автодополнение для алхимии работает, а для джанги, очевидно — нет (кто ж дополнит order__event__idslines?). Энивей, я просто навскидку что-то вытащил из кода, и не подбирал специально что-то феерическое.
Ленивыми == не вытащит. select_related работает только для прямых запросов. И разве ему можно уже указать «этого тащи, этого не тащи»?
Бтв, IdsBatch — он через Order, Event, IdsLine, IdsBatch. Так что это будет что-то типа Q(order__event__idslines__idsbatches__status = RECEIVED). Я уже умудрился забыть, обратный джойн в джанге работает?
«SettlementLine.query(Settlement, Payment, Order, Event)» вытаскивает 5 объектов в каждой строке. Типа, «for settleline, settle, payment, order, event in thisquery» было бы.
Вот реализация на питоне. Я думаю, что на джаваскрипте можно сделать нечто подобное тоже.
def humankey(fn):
'''Turn a string into a list of substrings and numbers.
This can be used as a key function for ``sorted``::
>>> s = lambda *x: list(sorted(x, key=humankey))
>>> print s('up-1', 'up-5', 'up-15', 'up-50')
['up-1', 'up-5', 'up-15', 'up-50']
>>> print s('up-1.sql', 'up.sql', 'up1.sql')
['up.sql', 'up1.sql', 'up-1.sql']
>>> print s('up.rb', 'up.py') # check extension sorting
['up.py', 'up.rb']
'''
fn, ext = os.path.splitext(fn)
return [int(s) if s.isdigit() else s for s in NUM_RE.split(fn)], ext
def humansort(l):
return list(sorted(l, key=humankey))
У меня в практике: сейчас меркуриал, перед этим проект с гитом, перед этим проект с сабвершеном и hgsubversion, перед этим еще два с меркуриалом. Да, три из них я убедил юзать меркуриал (один с нуля, один с свн, один — самый последний — с базара), но усилия того стоили. :)
Да, я уже подумываю, что можно расширить Backbone.View, и сделать this.observe('inner-el', field/expression) (inner-el — внутри this.el), и будет тотальная красота. :)
Не вытащит — в плане они не будут у меня, это будет еще один запрос (ну, не один, десяток).
> все равно это проще чем та кверя, что привели вы. обратный джойн работает, да
Да не, не проще. Особенно учитывая, что у меня в ipython'e автодополнение для алхимии работает, а для джанги, очевидно — нет (кто ж дополнит order__event__idslines?). Энивей, я просто навскидку что-то вытащил из кода, и не подбирал специально что-то феерическое.
Бтв, IdsBatch — он через Order, Event, IdsLine, IdsBatch. Так что это будет что-то типа Q(order__event__idslines__idsbatches__status = RECEIVED). Я уже умудрился забыть, обратный джойн в джанге работает?