Объект типа 'TYPE' не является JSON-сериализуемым Django - PullRequest
0 голосов
/ 24 мая 2019

Я использую ReactJS и Graphql в качестве внешнего интерфейса, а Django и графен - в качестве внутреннего.

В Django у меня есть следующий код:

company = Company.objects.get(pk=input.company.id)   
###### Result is <Company: Company object (14)>        
UserByManagerCreated.delay(company=company)

И в UserByManagerCreated у меня есть:

@task
def UserByManagerCreated(company):
    #Send emails, ....
    pass

Но я получаю сообщение об ошибке Object of type 'Company' is not JSON serializable

Есть идеи?

1 Ответ

0 голосов
/ 24 мая 2019

Вы не можете отправить его в задачу сельдерея, потому что она должна быть сериализуемой, потому что отложенная задача хранится в очереди (Redis или Rabbit), и она должна быть сериализуемой.Таким образом, вы можете передать все сериализуемые типы в качестве аргументов для задачи сельдерея.

Я предлагаю передать те значения, которые вам нужно использовать в задаче.Не сам company, а только те значения, которые вам нужны.Или вы можете поместить их в словарь и передать вместо этого.

   company = Company.objects.get(pk=input.company.id)
   company_data = {'id': company.id, 'your_field': company.your_field}   
   UserByManagerCreated.delay(company=company_data)

И, как посоветовал AKX, вы можете передать только id и получить свой company прямо в задании.Но если это задание на отправку почты, я думаю, что вы можете отправлять только список необходимых писем в качестве аргумента, чтобы отправить туда письмо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...