05/27: Опыт использования Django
Итак, начнём.
1) Конфигурация.
1.1) Подключение мелких компонент.
Использую симлинки. Потому что virtualenv ещё хуже, поддержка используемых несколькими проектами плагинов превращается в пытку.
1.2) Отсутствие модульной настройки приложений.
Всё планирую заточить для себя
http://github.com/jabapyth/django-appsettings , да никак руки не
доходят.
1.3) Отсутствие настройки media для приложений.
1.4) Отсутствие точек подключения в шаблонах. Есть
http://code.google.com/p/django-app-plugins/ , но они какие-то
дурацкие, потому что очевидно, что для extension_point нужно писать вьюшку, а не шаблон.
continue reading
Привет всем, в кои-то веки сподобился написать о Django.
Причём не общий пост, а решение конкретной мелкой задачки.
Итак, задача: Нужно ограничить количество записей в InlineModelAdmin.
Решение: По историческим причинам, иерархия классов в Django сильно различается для ModelAdmin и InlineModelAdmin:
Model <-(has)<- ModelAdmin ->(has)-> queryset
, но
Model <-(has)<- InlineModelAdmin ->(has)->
-> formset = BaseInlineFormSet ->(has)-> get_queryset
Итого:
class MyBaseInlineFormSet(BaseInlineFormSet):
def get_queryset(self):
sup = super(MyBaseInlineFormSet, self).get_queryset()
return sup.order_by('-id')[:5]
reg_inline(A, B, formset = MyBaseInlineFormSet, extra = 5)
Где reg_inline это упрощенный способ сделать site.register с помощью моего http://github.com/buriy/django-superadmin
08/30: Про исключения в питоне
Уважаемые товарищи python-девелоперы,
Eсли кто не знает, или не помнит, или не задумывался об этом.
Если вы хотите обернуть внутреннюю ошибку в новое исключение (“сделать reraise”), например, в таком коде:
try:
do_something()
except Exception, e:
raise e
То внутренние фреймы стека у вас забудутся, первым фреймом будет строчка с raise e
Если вы не хотите терять внутренние фреймы, пишите так:
continue readingjavascript:document.location="http://socialgraph-resources.googlecode.com/svn/trunk/samples/findyours.html?q="+document.location
continue reading
08/19: git для django
Список преимуществ и недостатков git расписывать не буду, скажу только о том, что мне больше всего льстит в последнее время: это git для django.
continue reading
04/30: Блог поменял движок
Пусть на улице снова снег, но это всё же весна, и душа требует перемен.
Поэтому я наконец-то сменил движок сайта на byteflow blog engine.
Теперь здесь есть древовидные комментарии, уведомления по почте, антиспам, пингбэки, трэкбэки, фиды по темам, openid-логины, кросспост в жж. Кажется, больше ничего нет. Кажется :)
Короче, то, что наколенный блог никогда не будет иметь.
А ещё, сегодня я думал о web-4.0. continue reading
02/25: мои инструменты
Долго колебался, т.к. не люблю писать про такие вещи, но вдруг кому поможет :)
continue reading
01/4: Что такое deseb.
Сегодняшняя тема — эволюция баз данных для django.
Я — один из двух создателей deseb.
deseb — это Django External Schema Evolution Branch, то есть инструмент для эволюции баз данных для django. Да, юные любители ruby on rails, это практически ваши миграции, только с более простым DSL и конструирующиеся автоматически по изменениям модели.
Ну а тем, кто с rails не знаком, расскажу поподробнее.
continue reading
Вот эта опция для проекта:
continue reading