docLamer
@docLamer

Как в Django передать объекты модели в celery?

Доброго времени суток! Помогите пожалуйста с такой проблеймой: имееться приложение django, функция создания заявки, отправка информации с этой заявки в телеграм. Решил использовать Celery, чтоб запихать эту задачу в фон. Как я могу передать туда объекты свей модели? Вот мой код:

views
ef create_request(request):

    req = Request.objects.all()
    work = Type_of_work_list.objects.all()
    perf = Full_name_of_the_performer_list.objects.all()
    condition = Condition_list.objects.all()

    if request.method == 'POST':
        form = Create(request.POST, request.FILES)
        if form.is_valid():
            i = Request(**form.cleaned_data)
            # i.save()
            # Send message in telegram
            # telega(i)
            send_telega.delay(???)
            ####

            return redirect('/')
    else:
        form = Create()

    context = {'form': form, 'work': work, 'perf': perf, 'condition': condition, 'req': req}

    return render(request, 'create/create.html', context)

отправка в телеграм
def telega(i):
    message_html = render_to_string('bot/bot.html', {'i': i})
    bot.send_message(chat_id=chat_id, text=message_html, parse_mode=telegram.ParseMode.HTML)

    return i

models
class Request(models.Model):
    Customers_full_name = models.CharField(...)
    Lecture_hall = models.CharField(...)
    Description = models.TextField(...)
    Work = models.ForeignKey('Type_of_work_list', ...)
    Performer = models.ForeignKey('Full_name_of_the_performer_list', ...)
    Comment = models.TextField(...)
    Files = models.FileField(...)
    Request_date = models.DateTimeField(...)
    Condition = models.ForeignKey('Condition_list', ...)
    History = HistoricalRecords()


P.S. Заранее благодарю за помощь.
  • Вопрос задан
  • 38 просмотров
Пригласить эксперта
Ответы на вопрос 1
@bacon
Передавать id, в таске по нему поднимать из базы, либо сразу преобразовать объект модели в что-то простое, например словарь с простыми типами и т.п.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы