• Как установить нужный timezone для datetime?

    ur001
    @ur001
    Программист. Искатель. Сноб. Социальный ассоциатор
    Для получения текущего времени с временной зоной (локализованное время) нужно использовать now() не из datetime, а из django.utils.timezone:

    from django.utils.timezone import now

    Чтобы преобразовать уже локализованный datetime в другую временную зону (например во временную зону пользователя):

    from django.utils.timezone import now, pytz
    user_timezone = pytz.timezone(user.timezone or settings.TIME_ZONE)
    now().astimezone(user_timezone)

    Если у вас нелокализованный datetime и вы хотите добавить ему информацию о временной зоне:

    from datetime import datetime
    from django.utils.timezone import pytz
    user_timezone = pytz.timezone(user.timezone or settings.TIME_ZONE)
    user_timezone.localize(now())

    Для того, чтобы Djagno использовало временные зоны для полей Date/Datetime нужно, они должны быть включены в настройках:

    TIME_ZONE = 'Europe/Moscow'
    USE_TZ = True
    Ответ написан
    Комментировать
  • Как избавитсья от лишних запросов в Django?

    ur001
    @ur001
    Программист. Искатель. Сноб. Социальный ассоциатор
    Почти на всех больших проектах мне удавалось избегать использования .raw(), по этому я спросил вас, что там внутри. Почти наверняка есть обходные пути.

    Для того, чтобы быть уверенным, что запрос не будет выполнен несколько раз, его можно сразу превратить в список:

    object_list = list(MyModel.objects.raw(...))

    Для выполнения prefetch_related в raw запросах обычно используют prefetch_related_objects, хотя эта функция в Django не документирована:

    from django.db.models.query import prefetch_related_objects
    object_list = list(MyModel.objects.raw(...))
    prefetch_related_objects(raw_qs, ['fk_field', 'another_fk_field', ...])


    Для изучения когда и какие запросы выполняются удобно пользоваться консолью debugsqlshell из django debug toolbar (которую вы скорее всего используете).
    Ответ написан
    Комментировать
  • Haystack + Solr: откуда взять шаблон для нового ядра?

    ur001
    @ur001 Автор вопроса
    Программист. Искатель. Сноб. Социальный ассоциатор
    Никто не отвечает. Тогда отвечу сам. Не используйте Solr, используйте ElasticSearch. Это тот же Lucene, но в гораздо более приятной обёртке:

    1) Не требует установки JRE/Jetty/Tomcat, запускается собственным бинарником
    2) Конфигурируется через yaml/json вместо уродского XML
    3) Не требует схемы и перезагрузки при её изменении!
    4) Не нуждается ни в каких ядрах, при этом спокойно поддерживает множество индексов

    А вот целый сайт по сравнению Solr vs. ElasticSearch
    Ответ написан
    Комментировать
  • Какой размер шрифта лучше для сайтов ?

    ur001
    @ur001
    Программист. Искатель. Сноб. Социальный ассоциатор
    14px, если воспользоваться банальным усреднением по web-проектам за последние пару лет.
    Ответ написан
    Комментировать
  • Какой фреймворк посоветуете для рисования диаграмм, графиков?

    ur001
    @ur001
    Программист. Искатель. Сноб. Социальный ассоциатор
    Неожиданно нашлась хорошая табличка сравнения разных библиотек визуализации: http://socialcompare.com/en/comparison/javascript-graphs-and-charts-libraries
    Ответ написан
    Комментировать
  • Какой фреймворк посоветуете для рисования диаграмм, графиков?

    ur001
    @ur001
    Программист. Искатель. Сноб. Социальный ассоциатор
    На мой D3 — это лучшая библиотека на данный момент, но она достаточно низкоуровневая. Есть множество библиотек для быстрого построения графиков, графов, диаграм и т.д. на её основе. Я бы советовал использовать какую-то из них. Например NVD3 или PolychartJS.

    Ещё есть Raphaël и gRaphaël на её основе.
    Ответ написан
    1 комментарий
  • Как лучше работать с пользовательскими лайками?

    ur001
    @ur001
    Программист. Искатель. Сноб. Социальный ассоциатор
    Если на каждый лайк делать по запросу, выйдет тяжело. Тяжелее чем то же самое сразу на сервере.
    Мне не удалось придумать адекватную систему кеширования для подобных элементов. На Хабре и других высоконагруженных проектах делаются запросы типа

    SELECT ... FROM votes WHERE user_id=<id> AND object_id IN(...)
    

    Один запрос на все лайки одного типа. N запросов, если на странице N типов объектов.

    Можно попробовать хранить (или дублировать) голоса в NoSQL, например в Redis с ключами типа «post_{post_id}_{user_id}» и вытаскивать их одним запросом mget… Но вы сначала запуститесь, и поймите что именно получение голосов у вас является узким местом, а потом городите такие штуки.
    Ответ написан
    6 комментариев
  • Нужен ли WYSIWYG BBcode редактор?

    ur001
    @ur001
    Программист. Искатель. Сноб. Социальный ассоциатор
    Нужен. Небольшое объяснение тут. Идея любопытная. Но, конечно, всё ломается когда пытаешься вставить какую-нибудь форматированную фигню из буфера обмена…
    Ответ написан
    Комментировать