Django不允许获取/创建新对象:QuerySet对象没有get_or_create属性
我在用Python 3.2和Django 1.6.2搭配PostgreSQL数据库。想用一个叫做get_or_create的快捷方式来有条件地创建对象时,遇到了AttributeError
的错误。
当然,解决这个问题的方法是,在尝试获取对象时捕捉这个异常,然后再创建它。但是,能不能直接用正常的get_or_create
来做到呢?
'QuerySet' object has no attribute 'get_or_create'
Traceback (most recent call last):
File "/Users/urk/Documents/virtualenv/pycharm_python_3_3/lib/python3.3/site-packages/tastypie/resources.py", line 195, in wrapper
response = callback(request, *args, **kwargs)
File "/Users/urk/Documents/virtualenv/pycharm_python_3_3/lib/python3.3/site-packages/tastypie/resources.py", line 426, in dispatch_list
return self.dispatch('list', request, **kwargs)
File "/Users/urk/Documents/virtualenv/pycharm_python_3_3/lib/python3.3/site-packages/tastypie/resources.py", line 458, in dispatch
response = method(request, **kwargs)
File "/Users/urk/Documents/virtualenv/pycharm_python_3_3/lib/python3.3/site-packages/tastypie/resources.py", line 1320, in post_list
updated_bundle = self.obj_create(bundle, **self.remove_api_resource_names(kwargs))
File "/Users/urk/Documents/xxx/app/api/userresource.py", line 51, in obj_create
api_key, created = ApiKey.objects.get_or_create(user=rv.obj)
File "/Users/urk/Documents/virtualenv/pycharm_python_3_3/lib/python3.3/site-packages/django/db/models/manager.py", line 154, in get_or_create
return self.get_queryset().get_or_create(**kwargs)
AttributeError: 'QuerySet' object has no attribute 'get_or_create'
编辑:代码示例。下面这段代码在运行python manage.py shell
时会出现这个异常。
from django.contrib.auth.models import User
User.objects.get_or_create(username='tu')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/urk/Documents/virtualenv/pycharm_python_3_3/lib/python3.3/site-packages/django/db/models/manager.py", line 154, in get_or_create
return self.get_queryset().get_or_create(**kwargs)
AttributeError: 'QuerySet' object has no attribute 'get_or_create'
1 个回答
0
按照@AndreyNelubin的建议,重新创建虚拟环境解决了这个问题。