【问题标题】:How to get id from User model in django如何从 django 中的用户模型中获取 id
【发布时间】:2015-12-22 14:01:22
【问题描述】:

我有以下代码:

user=User.objects.get(username=uid)

我通过 url "/profile/showprofile/{{post.author}}" 传递 uid 的值。我的 post.author 包含值为“dean88”。

运行表单并单击带有上述网址的链接。我收到一条错误消息,提示 invalid literal for int with base 10 "dean88"

但是当我去 python shell 并给出: user=User.objects.get(username='dean88') 我仍然得到同样的错误。仅当我将用户的 id 输入为整数时,该错误才会出现。比如,user=User.objects.get(username=2)。

可能是什么问题以及如何避免?

【问题讨论】:

  • 你指的User是django默认的User模型吗?
  • 是的。指的是django的User模型
  • dean88 看起来不像一个 id,它是一个整数。尝试将其更改为 {{post.author.id}}
  • 在进一步阅读您的 OP 两次之后,我认为您一定是创建了用户,为 .username 属性分配了错误的值(即,用户是用 2 创建的,而不是 dean88用户名。您可以通过管理界面查看,或者直接通过数据库数据上的pgadmin 更好)

标签: python django python-2.7 django-models django-forms


【解决方案1】:

您当前正在为您的 url kwarg 获得一个“dean88”值,因为您将 post.author 的字符串表示形式传递给它,即用户名。 请改用“/profile/showprofile/{{post.author.pk}}”来传递实际的用户 ID。

【讨论】:

  • 这也是我的假设(见我上面的评论)。但是,它没有解释为什么user=User.objects.get(username='dean88') 会抛出错误,而user=User.objects.get(username=2) 可以工作。
  • @Pynchia.. 代码 user=User.objects.get(username=2) 在我的 shell 中不起作用。它抛出一个错误说“Object_name 不存在。用户匹配查询不存在”
  • 你是对的!我们需要查看更多代码才能弄清楚。
  • 对不起,那我一定是误会了,我觉得你的帖子少了away这个词。好吧,就像我和@suselrd 最初假设的那样,一切都解决了,对吧?
  • @suselrd.. 顺便说一下“/profile/showprofile/{{post.author.pk}}”这不会返回任何值。仅当使用“/profile/showprofile/{{post.author.id}}”时,它才会将 id 返回给 views.py。不知道为什么。对此有任何想法。
【解决方案2】:
>>> from django.contrib.auth.models import User
>>> user = User.objects.filter(username='paolocooper12').first()
>>> print(user)
>>> print(user.id)

这就是你在 python manage.py shell 中的做法

【讨论】:

    猜你喜欢
    • 2016-01-02
    • 2022-01-09
    • 2020-11-02
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多