django celery 4 - ValueError:int() 的文字无效,基数为 10



我有 django 1.11.5 和芹菜 4。

我想将用户视图传递给任务(因为我无法在 tasks.py 中执行此操作,对吧?

def form_valid(self, form):
    form.instance.user = self.request.user
    dict_obj = model_to_dict(self.request.user)
    # serialized = json.dumps(dict_obj)
    # print(serialized)
    task_number_one.delay(dict_obj['username'])
    return super().form_valid(form)

在芹菜中,我收到一个错误:

ValueError: invalid literal for int() with base 10: 'my_username'

task_number_one的完整定义是什么?什么是完整的错误堆栈?

看起来传递给task_number_one的第一个参数应该是 int,但用户名是一个字符串。

发布异常的堆栈跟踪和任务示例对您很有帮助,但考虑到这一点,我认为有两个地方发生了此错误。

  1. 你的芹菜任务是期望第一个参数是int,我觉得这有点不太可能。

  2. 您的芹菜任务是通过主键(很可能是整数(搜索用户。

def task(user_id):
    user = User.objects.get(pk=user_id)

如果将字符串传递到 user_id 中,这将引发该值错误。

应更新视图以使用用户的 pkid 属性。

def form_valid(self, form):
    form.instance.user = self.request.user
    task_number_one.delay(self.request.user.pk)
    return super().form_valid(form)

相关内容

  • 没有找到相关文章

最新更新