我的模型是这样的:
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代码中得到了相同的结果。
很明显我在做傻事。它是什么?
试试看
u
告诉Python/Django它是一个Unicode字符串,而不是一个普通的旧的str
,在您的s[0].NameFirst
示例中,它将值显示为包含双引号。名称用多余的双引号存储在数据库中。所以,如果要捕获该记录,正确的代码是:
…而不是:
如果不能确定,该查询将返回结果,则必须添加异常处理,如下所示:
我遇到了同样的问题,下面是解决方法:
相关问题 更多 >
编程相关推荐