【发布时间】:2017-07-20 14:45:03
【问题描述】:
我遇到了 Django ORM 的奇怪问题。
这是 id 为 1 和 6 的 Action 对象,但不能通过 id 获得第一个。
两者都存在于数据库中。
In [17]: Action.objects.get(code='check_email').pk
Out[17]: 6L
In [18]: Action.objects.get(code='periodic_order_check').pk
Out[18]: 1L
In [19]: Action.objects.get(pk='6')
Out[19]: <Action: Check Email>
In [20]: Action.objects.get(pk='1')
---------------------------------------------------------------------------
DoesNotExist Traceback (most recent call last)
<ipython-input-20-728196789a45> in <module>()
----> 1 Action.objects.get(pk='1')
/home/vagrant/.pyenv/versions/vagrant/lib/python2.7/site-packages/django/db/models/manager.pyc in manager_method(self, *args, **kwargs)
120 def create_method(name, method):
121 def manager_method(self, *args, **kwargs):
--> 122 return getattr(self.get_queryset(), name)(*args, **kwargs)
123 manager_method.__name__ = method.__name__
124 manager_method.__doc__ = method.__doc__
/home/vagrant/.pyenv/versions/vagrant/lib/python2.7/site-packages/cacheops/query.pyc in get(self, *args, **kwargs)
351 qs = self
352
--> 353 return qs._no_monkey.get(qs, *args, **kwargs)
354
355 def exists(self):
/home/vagrant/.pyenv/versions/vagrant/lib/python2.7/site-packages/django/db/models/query.pyc in get(self, *args, **kwargs)
385 raise self.model.DoesNotExist(
386 "%s matching query does not exist." %
--> 387 self.model._meta.object_name
388 )
389 raise self.model.MultipleObjectsReturned(
DoesNotExist: Action matching query does not exist.
【问题讨论】:
-
您可以尝试禁用 cacheops 或使用
manage.py invalidate all清除其缓存。 -
@Suor 谢谢你,你是对的。
标签: django database django-models