• Не могу понять что за ошибка?

    Tomio
    @Tomio
    backend developer (python, php)
    Ваша ошибка говорит о том, что у вас идет циклический импорт модуля eq.
    Попробуйте поменять конструкцию from operator import eq на import operator, и уже к методам и классам данного модуля обращаться через operator.eq
    Ответ написан
    Комментировать
  • Как добавить поле в существующую модель Django?

    Tomio
    @Tomio
    backend developer (python, php)
    Извиняюсь за глупый вопрос, но вы после того, как сделали миграцию, вы её применили? Обычно в механике добавления нового поля для модели проблем быть не должно.
    А можете показать полный текст ошибки? Часто люди делают опечатки при обращении к атрибутам (вы могли случайно написать не model.chief, а model.chef, например)
    Ответ написан
    Комментировать
  • Как получить первое non-NULL значение в группе для данного поля?

    Tomio
    @Tomio
    backend developer (python, php)
    Возможно, если вы приведете пример полного запроса с уточнениями, то помочь вам будет легче.
    Может быть вам подойдет постфильтрация с помощью HAVING, а может нужно будет функию COALESCE применить. Без подробностей не ясно.
    Ответ написан
    Комментировать
  • Как организовать оповещение пользователей?

    Tomio
    @Tomio
    backend developer (python, php)
    Это довольно просто можно реализовать через событийную систему. Посмотрите в сторону паттерна "Наблюдатель (Observer)". У вас будут подписчики на события (сервис уведомления по email, сервис уведомления в telegram и пр.), и когда наступит то или иное событие (в вашем случае, когда погода опустится ниже нуля) вам всего лишь нужно будет оповестить свои сервисы-подписчики и они уже оповестят пользователей.
    Ответ написан
    1 комментарий
  • Как использовать AsyncMock?

    Tomio
    @Tomio
    backend developer (python, php)
    Такая ошибка "AttributeError: 'coroutine' object has no attribute 'objects'" говорит о том, что вы пытаетесь получить и одновременно присвоить атрибут objects для объекта корутины. С ними такое не прокатывает) Вам нужно "выполнить" (то есть, применить ключевое слово await) корутину (сопрограмму) и получить уже какой-то ответ.
    Скорее всего, в вашем случае нужно написать как-то так:
    mock_bank_control = AsyncMock()
    objects = await mock_bank_control(return_value=[bank])
    Ответ написан
    Комментировать
  • Как в Django сделать уникальные значения поля ForeignKey на основе записей в БД?

    Tomio
    @Tomio
    backend developer (python, php)
    Смотрите в сторону unique_together, validate_unique, либо переопределяйте метод save для проверки.
    Ответ написан
    Комментировать
  • Как оживить docker на windows 10?

    Tomio
    @Tomio
    backend developer (python, php)
    А WSL2 вы устанавливали?
    Ответ написан
    1 комментарий
  • Как сделать автоматический zip архиватор на python?

    Tomio
    @Tomio
    backend developer (python, php)
    import shutil
    
    output_filename = 'my_archive'
    dir_name = '/folder/to/archivate'
    shutil.make_archive(output_filename, 'zip', dir_name)


    На выходе у вас будет архив с названием 'my_archive.zip' и содержимым папки '/folder/to/archivate', включая все подпапки.
    Ответ написан
  • Как достать данные из массива?

    Tomio
    @Tomio
    backend developer (python, php)
    // $arr - массив с данными из задачи
    $users = array_column($arr, 'user_id');
    Ответ написан
    Комментировать
  • Как удалить элемент из списка списков (python)?

    Tomio
    @Tomio
    backend developer (python, php)
    Если точно известно, что это именно список из списков, в котором есть объекты только Class1, то делается это просто с помощью фильтра в 1 строку:
    filtered_lst = [list(filter(lambda cls1: cls1.text != Действие найдено, lst_inner)) for lst_inner in ar_ar]
    Ответ написан
    1 комментарий
  • Как проще выводить видео на сайте через файлы?

    Tomio
    @Tomio
    backend developer (python, php)
    Может стоит попробовать написать скрипт, который будет перегонять видео с Youtube в mp4 файл на сервере с сайтом?
    Алгоритм примерно такой:
    1 - Заводите новое поле с типом "Файл" для видео
    2 - Пишите скрипт, в котором:
    2.1 - Делается выборка элементов каталога со ссылкой на видео в Youtube (вытаскиваем только ID элемента и ссылку на видео)
    2.2 - Проходимся по каждому элементу, по ссылке скачиваем видео в папку на сервере и записываем путь к нему. После закачки прикрепляем видео к элементу по ID элемента и ID нового созданного свойства из п.1
    2.3 - Обновляем элемент
    3 - Вносите изменение в публичной части сайта. Проверяете, если у элемента заполнено новое свойство из п.1, то выводите скачанное видео с сервера. Иначе отображаете видео с Youtube.

    Я не описывал техническую сторону в подробностях, ибо реализация может быть разной. Первое, что нужно будет победить - скачивание видео с Youtube. Погуглите на эту тему, на php есть библиотеки для этого.
    Ответ написан
    Комментировать
  • Как отменить изменения, которые еще не были в комите?

    Tomio
    @Tomio
    backend developer (python, php)
    git checkout -f
    Ответ написан
    Комментировать
  • Как исправить ошибку которая возникла из за неправильного построения программы?

    Tomio
    @Tomio
    backend developer (python, php)
    Атрибут screen у вас создаётся только в момент создания экземпляра класса (application = App()) и вызова метода init(). Если пробовать его вызывать как вы - App.screen - ваш класс о нём ничего не знает.
    Вам нужно заменить App.screen на self.screen.

    P.S. и лучше переименовать init() в __init()__, тогда вам отдельно не нужно будет вызывать этот метод.
    Ответ написан
    1 комментарий
  • Плохая ли идея хранить oneToMany связи в json колонке?

    Tomio
    @Tomio
    backend developer (python, php)
    А что за база данных у вас? Если это реляционная база, то таким образом вы рушите её концепцию) Таким подходом вы лишаете себя (и базу), как минимум, автоматической проверки на существование записи в таблице, на которую ссылаетесь (Foreign Key Constraint)
    Ответ написан
    2 комментария
  • Как избавиться от большого models.py?

    Tomio
    @Tomio
    backend developer (python, php)
    Чтобы избежать циклического импорта, используйте либо, как вы упомянули, apps.get_model(), либо импорт модуля целиком, а не конкретно моделей. То есть, не
    from somemodule.models import SomeModel,
    а
    import somemodule.models as somemodule_models
    и затем к модели обращайтесь в коде через
    somemodule_models.SomeModel.objects(...)...
    Ответ написан
    Комментировать
  • Как в Git удалить файл из коммита, если уже запушил?

    Tomio
    @Tomio
    backend developer (python, php)
    Если хотите прям изменить ваш запушенный коммит, то:
    1 - переключаетесь на вашу ветку.
    2 - вносите правки (удаляете ваш файл)
    3 - выполняете
    git commit --amend -m "Новое сообщение, которое затрет старое сообщение предыдущего коммита."

    4 - выполняете
    git push --force

    Но лучше сделайте дополнительный коммит, в котором удалите ненужный файл. Плохого в этом ничего нет.
    Ответ написан
    Комментировать
  • Как изменить значение переменной в процессе исполнения цикла?

    Tomio
    @Tomio
    backend developer (python, php)
    pop == rnd, но rnd нигде до этого не было. Плюс pop - строка. Вам надо привести pop к числовому типу.

    Вообще, вам бы вот это дело отрефакторить:
    dict = {1: trys - 1}
    tr1 = dict[1]

    цикл for i in range можно запустить и в обратном порядке, от trys до 0 =)

    Еще вот тут:
    if trys == 0:

    у вас trys всегда будет одинаковое.
    Ответ написан
  • Почему выдаётся ошибка 500 при вызове bitrix:catalog.item?

    Tomio
    @Tomio
    backend developer (python, php)
    Смотрите логи ошибок сервера (error_log). Там логируются детальные сообщения о причинах ошибок, в т.ч. серверных (коей 500-я и является), а также будет полный трейсбек, где у вас ошибка случилась.
    Ответ написан
  • Какие есть варианты повышения для вебмастера?

    Tomio
    @Tomio
    backend developer (python, php)
    Когда-то очень давно я был в такой же ситуации, как и вы. Просто упёрся в потолок. И тут дело даже не в зп, мне могли ее повысить. Дело в пуле задач, которые я решал. Он был ограничен веб-мастерингом, очень разрозненным (сео, формошлёпство, вёрстка, контент).
    В итоге, как бы комфортно мне ни было, я решил, что нужно двигаться дальше. Сменил работу, стал чисто бэкендером. В итоге хорошо прокачал PHP, MySQL, освоил Git. Потом снова сменил работу, освоил на ней Symfony, Clickhouse, Kubernetes. А потом вообще сменил язык и сейчас активно работаю на Python с очень крутым стэком. Соответственно, зп моя очень сильно выросла, так как знаний и опыта стало больше и цениться на рынке я стал выше. А главное, я кайфую сейчас от того, чем занимаюсь)
    Не бойтесь, вырывайтесь из этого болота, пока не поздно. Думайте наперёд.
    Ответ написан
    Комментировать
  • Как сделать итерировать объект другой модели после 2ух итерации первой итд?

    Tomio
    @Tomio
    backend developer (python, php)
    Например, так:
    banners = ['banner1', 'banner2', 'banner3']
    posts = ['post1', 'post2', 'post3', 'post4', 'post5', 'post6', 'post7', 'post8']
    banner_step = 2
    for index, post in enumerate(posts):
        print(post)
        if (index+1) % banner_step == 0 and banners:
            print(banners.pop(0))


    Вывод будет таким:
    post1
    post2
    banner1
    post3
    post4
    banner2
    post5
    post6
    banner3
    post7
    post8


    Только нужно учесть, что после каждой команды banners.pop(0) список banners будет уменьшаться. Если нужно сохранить исходный список, то необходимо будет сделать копию данного списка и уже в нём делать .pop(0)
    Ответ написан
    Комментировать