【问题标题】:TypeError: expected string or bytes-like object User.idTypeError:预期的字符串或类似字节的对象 User.id
【发布时间】:2018-05-04 19:58:24
【问题描述】:

我正在尝试使用 Django 在数据库上注册一个新的 Transaction 对象,但是当我尝试执行 user_id = user.id 时,我得到了 TypeError: expected string or bytes-like object 我真的不明白为什么会发生这种情况,因为我做了注册新银行对象时的相同步骤(如下图所示)。我尝试调试并且局部变量具有正确的值,我还尝试使用 string 或 int 强制转换 user.id,但它们都不起作用。 tracebackconsole errorcreate Transaction methodcreate Bank method models.py

【问题讨论】:

  • 问题出在哪里?发布回溯。是迁移问题吗?
  • 我已经编辑了帖子,在 StackOverflow 上遇到了一些问题
  • @hansTheFranz 我添加了一些链接来检查回溯,谢谢
  • 既然您使用的是pdb,那么type(user)type(user.id) 提供了什么?回溯告诉您“我期望 X 或 Y”,这意味着 user.id 两者都不是。可能相关,您在倒数第二行的 registerNewUser 中不带括号执行 b.save。这是一个空语句,它返回一个你永远不会保存的函数对象。你想用save()调用函数吗?
  • @sjm324 (Pdb) type(user) (Pdb) type(user.id) 我尝试转换用户。 id 到 str 并且它仍然抛出 TypeError

标签: django python-3.x django-models django-views typeerror


【解决方案1】:

首先,请不要将代码或错误发布为图像;它们是文本,它们应该作为文本发布在问题中。

但是,我在这些 sn-ps 中没有看到任何表明错误与用户有关的内容 - 该行可能已突出显示,因为它是该多行调用中的最后一行。

相反,错误似乎在对 date.today 的引用中 - 如果那是 datetime.date 类,那么 today 是一个方法,您需要调用它:

Transaction.objects.create(date=date.today(), ... )

或者,由于该字段具有默认值,您可以完全从 create 调用中省略 date 属性。

【讨论】:

    猜你喜欢
    • 2019-10-31
    • 1970-01-01
    • 2018-10-17
    • 2020-07-08
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    相关资源
    最近更新 更多