Django数据库查询:如何通过id获取对象?
Django 自动创建一个 id 字段作为主键。
现在我需要通过这个id来获取对象。
object = Class.objects.filter()
这个过滤器怎么写呢?
Django automatically creates an id field as primary key.
Now I need to get the object by this id.
object = Class.objects.filter()
How to write this filter?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
如果您没有某些 ID,例如 mysite.com/something/9182301,您可以使用
get_object_or_404
通过from django.shortcuts import get_object_or_404
导入。使用示例:
In case you don't have some id, e.g., mysite.com/something/9182301, you can use
get_object_or_404
importing byfrom django.shortcuts import get_object_or_404
.Use example:
您可以使用:
这将返回一个查询集,即使它获取一个对象。
如果您只需要一个对象,请使用:
You can use:
This will return a query set even if it gets one object.
If you need exactly one object use:
你也可以这样做:
这可行,但我可能不确定 Django 2 是否支持它。
You can also do:
This works, but there may I'm not sure if it's supported in Django 2.
您还可以使用 get_object_or_404 django捷径。如果未找到对象,则会引发 404 错误。
You can also use get_object_or_404 django shortcut. It raises a 404 error if object is not found.
我遇到了同样的问题,但原因不同:
此代码引发了 ImportError 异常。令我困惑的是,下面的代码执行得很好,并按预期返回了结果集:
get()
方法的回溯尾部:读取 Django 的
loading.py,我得出的结论是,我的
settings.py
到我的应用程序的路径不正确,其中包含我的Class
模型定义。我所要做的就是更正应用程序的路径,并且get()
方法执行良好。这是我的
settings.py
以及正确的路径:)
所有的混乱都是因为我使用 Django 的 ORM 作为独立的,所以命名空间必须反映这一点。
I got here for the same problem, but for a different reason:
This code was raising an ImportError exception. What was confusing me was that the code below executed fine and returned a result set as expected:
Tail of the traceback for the
get()
method:Reading the code inside Django's
loading.py
, I came to the conclusion that mysettings.py
had a bad path to my app which contains myClass
model definition. All I had to do was correct the path to the app and theget()
method executed fine.Here is my
settings.py
with the corrected path:)
All the confusion was caused because I am using Django's ORM as a standalone, so the namespace had to reflect that.
如果你想获取一个对象,使用 get() 更简单:
If you want to get an object, using
get()
is more straightforward: