如何从 django 中的用户模型中获取 id
Posted
技术标签:
【中文标题】如何从 django 中的用户模型中获取 id【英文标题】:How to get id from User model in django 【发布时间】: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
更好)
【参考方案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 中的做法
【讨论】:
以上是关于如何从 django 中的用户模型中获取 id的主要内容,如果未能解决你的问题,请参考以下文章
如何从用户在 django 基本模板中创建的所有帖子中获取模型字段值的总和?
如何从 django 模板中的 for 循环中获取特定的 id?