python django ORM 错误:无法将关键字 'id' 解析到字段中。选择项:id,
我找到了答案!这个问题发生是因为我把脚本的名字和应用的名字起得一模一样!
这是我对帖子内容的简化和修正版本。
我正在尝试运行这个独立的脚本(或者说它就在应用的文件夹里):
#!/usr/local/bin/python -W ignore
# coding: utf-8
import sys, os
sys.path.append('/usr/home/code')
os.environ['DJANGO_SETTINGS_MODULE'] = 'tuppy.settings'
from tuppy.tup.models import *
some_dict={}
print UserProfile.objects.filter(id=1)
print 'lallala'
print some_dict['unexisting_key']
然后我遇到了以下错误。请注意,这个脚本一开始会正确地把请求结果打印到UserProfile上,但在遇到另一个错误时,它才会打印出错误的描述:
# ./tup.py
[<UserProfile: 115>]
lallala
Traceback (most recent call last):
File "./tup.py", line 10, in <module>
p = UserProfile.objects.filter(id=1)
File "/usr/local/lib/python2.6/site-packages/django/db/models/manager.py", line 141, in filter
return self.get_query_set().filter(*args, **kwargs)
File "/usr/local/lib/python2.6/site-packages/django/db/models/query.py", line 556, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "/usr/local/lib/python2.6/site-packages/django/db/models/query.py", line 574, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "/usr/local/lib/python2.6/site-packages/django/db/models/sql/query.py", line 1152, in add_q
can_reuse=used_aliases)
File "/usr/local/lib/python2.6/site-packages/django/db/models/sql/query.py", line 1045, in add_filter
negate=negate, process_extras=process_extras)
File "/usr/local/lib/python2.6/site-packages/django/db/models/sql/query.py", line 1215, in setup_joins
"Choices are: %s" % (name, ", ".join(names)))
django.core.exceptions.FieldError: Cannot resolve keyword 'id' into field. Choices are: credit_limit, id, insured_order_limit, mob_tel, resale_limit, sec_tel, status, user, voice_psw
#
1 个回答
1
我在尝试从auth_group获取第一个组的时候也遇到了同样的问题(Django版本1.3.5)。
Group.objects.get(name='First Group')
也出现了相同的FieldError
错误。
奇怪的是,这个方法却可以正常工作:
try:
Group.objects.get(name="Active Rater") #crazily not working
except django.core.exceptions.FieldError as e:
group = Group.objects.get(name="Active Rater") #crazily works
我还没有深入研究Django的代码,搞清楚为什么会这样。