【问题标题】:Django, matching query does not exist with existing db rowDjango,现有数据库行不存在匹配查询
【发布时间】: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


【解决方案1】:

我建议你使用

Action.objects.all().values()

检查所有值并查看您的 get 查询是否正确。由于您使用的字段是 pk (假设它是主键并且您没有重新定义它),因此传递字符串 '1' 无论如何都不应该工作。检查模型和字段类型以及所有字段的值。

【讨论】:

    猜你喜欢
    • 2015-01-28
    • 2022-01-05
    • 2020-10-15
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多