Django的数据库查询:如何通过ID获取对象?

Django自动创build一个id字段作为主键。

现在我需要通过这个id来获取对象。

object = Class.objects.filter() 

如何写这个filter?

如果你想获得一个对象,使用get()更直接:

 obj = Class.objects.get(pk=this_object_id) 

我在这里遇到了同样的问题,但是出于不同的原因:

 Class.objects.get(id=1) 

这段代码引发了一个ImportErrorexception。 什么令我困惑的是,下面的代码执行正常,并返回一个结果集按预期:

 Class.objects.all() 

get()方法的追踪的尾巴:

 File "django/db/models/loading.py", line 197, in get_models self._populate() File "django/db/models/loading.py", line 72, in _populate self.load_app(app_name, True) File "django/db/models/loading.py", line 94, in load_app app_module = import_module(app_name) File "django/utils/importlib.py", line 35, in import_module __import__(name) ImportError: No module named myapp 

阅读Django的loading.py的代码,我得出的结论是,我的settings.py有一个不好的path到我的应用程序包含我的Class模型定义。 我所要做的只是正确的应用程序path和get()方法执行良好。

这是我的settings.py与正确的path:

 INSTALLED_APPS = ( 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', # ... 'mywebproject.myapp', 

所有的困惑都是因为我把Django的ORM作为一个独立的东西而引起的,所以命名空间必须反映出来。