Так сделайте связь один-к-одному товары-товарыНаГлавной и пусть каждый товарыНаГлавной ссылается на какой-то товар, а сами данные будете всегда брать из "товары".
В админке когда будете заводить товарыНаГлавной джанго сама предложит выбрать объект для связи из "товары". Если товаров много - используйте raw_id в админке.
Неправильно дергаете subprocess, уберите там знак =.
Должен быть вызов, типо subprocess.call(["xcopy", "source", "dest"]) , а у вас там сейчас присваивание вместо вызова.
Посмотрите примеры тут.
У вас sender ожидает в параметре text - строку которую надо отправить.
Вы вместо строки скармливаете ему file object.
Вам нужно после того как открыли файл - прочитать из него данные и потом скормить их в sender.
Как открыть файл и прочитать из него текст смотрите здесь и здесь
У вас разные PYTHONPATH локально и в докере, условно в одном добавлено /путь_до_проета/app, в другом нет.
Как вариант добавьте нужные пути в PYTHONPATH в докере.
Теоретически можно так сделать.
Например сделать virtualenv, поставить туда зависимости и таскать потом скрипт вместе с папкой энва куда вам нужно.
Но проблемы с переносимостью могут быть, во первых потому что бинарники в зависимостях собираются под вашу систему, во-вторых потому что некоторые либы требуют предустановленных системных пакетов.
p = re.compile(r'^br', re.MULTILINE)
with open(test, mode='r') as openfile:
result = re.sub(p, "\n", openfile.read())
print(result)
# Запись результата в файл
with open('out', 'w') as out:
out.write(result)
Сигнал отправляется при изменении джанговских сеттингов в рантайме. Документацией предполагается использовать для тестов, в вашем примере - для костылей :)
Модели - связны с БД, они нужны для представления данных в базе в виде объектов python.
Формы - в общем случае нужны для получения и валидации данных от пользователя c которыми вы потом сделаете что вам нужно. Частный случай - ModelForm, сам слепит для вас объект модели из данных полученных в форме.
Флоу такой:
Данные юзера -> Форма -> Модель -> БД