Django自動創建一個id字段作爲主鍵。Django數據庫查詢:如何通過id獲取對象?
現在我需要通過此ID獲取對象。
object = Class.objects.filter()
如何編寫此過濾器?
Django自動創建一個id字段作爲主鍵。Django數據庫查詢:如何通過id獲取對象?
現在我需要通過此ID獲取對象。
object = Class.objects.filter()
如何編寫此過濾器?
如果你想獲得一個對象,使用get()
更爲直接:
obj = Class.objects.get(pk=this_object_id)
我來到這裏了同樣的問題,但出於不同的原因:
Class.objects.get(id=1)
此代碼是提高一個ImportError異常。什麼是困惑我的是,下面的代碼執行罰款和返回的結果集料:追溯爲get()
方法
Class.objects.all()
尾巴:
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
對我的應用程序有不好的路徑,其中包含我的Class
模型定義。我所要做的只是正確的應用程序的路徑和get()
方法執行良好。
這是我settings.py
與該修正的路徑:
INSTALLED_APPS = (
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
# ...
'mywebproject.myapp',
)
所有的混亂,是因爲我使用的Django的ORM作爲一個獨立的引起的,所以命名空間必須反映這一點。
僅供參考,`pk`是引用任何模型主鍵的首選方式。只有在模型作者沒有明確指定主鍵的情況下才會生成「id」字段。如果作者*確實指定了一個不是`id`的主鍵字段,那麼就不會有'id`字段。 – 2010-11-29 04:18:39