Я пытаюсь создать бота для телеграмм, который загружает изображения на сайт django. Вы отправляете боту изображение -> бот загружает изображение на сервер и добавляет информацию к модели -> изображение появляется на веб-странице
Я застрял с "бот добавляет информацию в модель" часть. По сути, я хочу использовать команду django .core.management.call_command для вызова пользовательской команды из кода, который добавляет информацию.
Вот структура
website/
bot.py
manage.py
myapp/
__init__.py
management/
__init__.py
commands/
__init__.py
myapp_task.py
views.py
Вот моя настраиваемая команда
# myapp_task.py
from django.core.management.base import BaseCommand
from picfeed.models import Captions
class Command(BaseCommand):
help = 'Adds captions to the model'
def add_arguments(self, parser):
parser.add_argument('cap_text', type=str)
def handle(self, *args, **options):
cap_text = options['cap_text']
caption = Captions(cap_text = cap_text)
caption.save()
self.stdout.write(self.style.SUCCESS('Successfully added caption "%s"' % cap_text))
Когда я использую Терминал и python manage.py myapp_task 'some string to add to the model'
работает отлично.
Однако, когда я вызываю myapp_task из кода, он не работает:
#bot.py
from django.core.management import call_command
call_command('myapp_task',cap_text = 'Hello there!' )
Ошибка:
\website>python bot.py
Traceback (most recent call last):
File "C:\Users\EgOl7001\AppData\Local\Continuum\anaconda3\lib\site-packages\django\core\management\__init__.py", line 103, in call_command
app_name = get_commands()[command_name]
KeyError: 'myapp_task'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "bot.py", line 3, in <module>
call_command('myapp_task',cap_text = 'Hello there!' )
File "C:\Users\EgOl7001\AppData\Local\Continuum\anaconda3\lib\site-packages\django\core\management\__init__.py", line 105, in call_command
raise CommandError("Unknown command: %r" % command_name)
django.core.management.base.CommandError: Unknown command: 'myapp_task'
Буду признателен за вашу помощь! :)