Моя модель похожа на это:
class Staff(models.Model):
StaffNumber = models.CharField(max_length=20,primary_key=True)
NameFirst = models.CharField(max_length=30,blank=True,null=True)
NameLast = models.CharField(max_length=30)
SchoolID = models.CharField(max_length=10,blank=True,null=True)
AutocompleteName = models.CharField(max_length=100, blank=True,null=True)
Я использую MySQL, в случае, если это имеет значение.
От оболочки manage.py:
root@django:/var/www/django-sites/apps# python manage.py shell
Python 2.5.2 (r252:60911, Jan 20 2010, 21:48:48)
[GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from disciplineform.models import Staff
>>> s = Staff.objects.all()
>>> len(s)
406
Таким образом, я знаю, что там существует 406 объектов "Штата". Я могу также видеть их в базе данных. Я проверяю одно из значений:
>>> s[0].NameFirst
u'"ANDREA"'
Это также соответствует тому, что я вижу в базе данных. Теперь я пытаюсь 'получить' этот объект.
>>> a = Staff.objects.get(NameFirst='ANDREA')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/var/lib/python-support/python2.5/django/db/models/manager.py", line 93, in get
return self.get_query_set().get(*args, **kwargs)
File "/var/lib/python-support/python2.5/django/db/models/query.py", line 309, in get
% self.model._meta.object_name)
DoesNotExist: Staff matching query does not exist.
Ха? Это происходит для всех значений всех столбцов, которые я протестировал. Я получаю тот же результат в своем коде view.py.
Я, очевидно, делаю что-то немое.Что это?
Попробуйте
a = Staff.objects.get(NameFirst=u'"ANDREA"')
u
сообщает Python / Django, что это строка Unicode, а не старая обычная str
, а в вашем примере s [0] .NameFirst
он показывает значение как содержащее двойные кавычки.
Я уже сталкивался с подобными проблемами раньше.
Я не совсем уверен, почему, но грубое «получить» имеет тенденцию вызывать у меня проблемы. Итак, я обычно использую вместо этого «фильтр», а затем получаю первый результат.
a = Staff.objects.filter(NameFirst='ANDREA')
result = a[0]