ошибка / баг python django ORM?: …Не удается преобразовать ключевое слово ‘id’ в поле. Варианты: id,

#python #django

#python #django

Вопрос:

я нашел ответ! это произошло, если я назвал скрипт точно так же, как название приложения!

это исправленная (упрощенная) версия сообщения. я пытаюсь запустить этот автономный скрипт (или даже расположенный в каталоге приложения):

 #!/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. вы публикуете класс UserProfile?

2. ошибка одинакова при обращении к любой модели / классу

3. Пожалуйста, создайте ответ с вашим решением вместо редактирования вопроса.

Ответ №1:

У меня была такая же проблема при попытке получить первую группу из auth_group (Django v. 1.3.5)

Group.objects.get(name='First Group')

выдал то же самое FeildError .

Как ни странно, это сработало:

 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, чтобы выяснить, почему.