• Как получить категории, если в их потомках есть товар?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Во-первых, для древовидных структур всегда используйте MPTT. Иначе обход дерева будет долгим, требовательным к ресурсам и зависимым от количества элементов и уровня их вложенности.

    Во-вторых, ORM с этой задачей не справится. А на чистом SQL можно.
    Предположим, что у нас есть приложение "catalog" и модели в нём такие:
    class Category(MPTTModel):
        parent = TreeForeignKey('self', verbose_name=u'Родитель', null=True, blank=True, related_name='children')
        name = models.CharField(u'Название', max_length=100)
    
    class Product(models.Model):
        category = TreeForeignKey(Category, verbose_name=u'Категория')
        ...

    Тогда SQL-запрос будет таким:
    SELECT name FROM catalog_category AS cc
    INNER JOIN LATERAL (
      SELECT cc.id AS id, SUM(products) AS p_count FROM (
        SELECT cc.id AS parent_id, category_id, COUNT(id) AS products
        FROM catalog_product
        WHERE category_id IN (
          SELECT id FROM catalog_category
          WHERE lft <= cc.rght AND lft >= cc.lft AND tree_id = cc.tree_id)
          GROUP BY category_id
        ) AS sub_cс
      GROUP BY parent_id
    ) AS cp
    USING(id) WHERE cp.p_count > 0;


    Естественно, работать будет на взрослых СУБД с поддержкой современных стандартов SQL. Например, на PostgreSQL.
    Ответ написан
    3 комментария
  • Есть ли жизнь на windows python разработчику?

    @Nikobraz
    Сис.админ
    Знаком с проблемами с руби гемами, но первый раз слышу про проблемы с питоном. С вебом точно не должно быть. На нем платформозависимый скрипт надо еще умудриться написать.
    Ответ написан
    Комментировать
  • Есть ли жизнь на windows python разработчику?

    Jump
    @Jump Куратор тега Windows
    Системный администратор со стажем.
    Где разрабатывать - пофиг.
    Разрабатывайте в привычной лично вам среде.

    Но не забывайте что работать все это будет на Linux. Поэтому тестировать и отлаживать лучше в родной среде. Для этого необходимо иметь виртуальный сервер с Linux на борту. Виртуализация сейчас не проблема, поэтому это довольно просто реализуется.

    многие библиотеки не работают на windows.
    Возможно такое и бывает, если какие-то хитрые и ужасно непопулярные библиотеки, как правило все что нужно, прекрасно работает.
    Ответ написан
    Комментировать
  • Есть ли жизнь на windows python разработчику?

    NeiroNx
    @NeiroNx
    Программист
    Нет они не правы. Flask нормально работает и на Windows - вот когда сталкнетесь с нерабочими библиотеками(они есть) вот тогда и будете пробовать линукс и удивитесь что там они точно так же не работают - напишите багрепорт или сами устраните ошибку.
    Ответ написан
    1 комментарий