Django 1.5 Admin - 对象匹配查询不存在 - 间歇性

时间:2014-02-25 11:31:09

标签: python django django-models pagination django-admin

Python 2.7.3 Django版本是1.5

我使用标准的Django Admin DefaultModelAdmin来添加和更改对象。

问题

当我使用Django Admin Add View添加一个对象时 - 大约每十次一次 - 我收到此错误:

Object matching query does not exist> Lookup parameters were {'objectid_exact':234}

相反,Django应该返回到可以看到所有对象的Paginated List View - 但似乎找不到新创建的对象。

注意 - 我在这里启用了DEBUG - 否则我看到标准错误500页。 它抱怨的代码行在我的models.py类中: 来自models.py:

return "MyObject: %s: %s (by: %s)" % (self.pk, self.title, self.namelc)

问题是,如果我刷新Django Admin,则添加了对象并且没有任何问题。

我做了一些关于此的研究并找到了一些文章并尝试了建议 - 但它们没有区别 - 例如:

  1. Django matching query does not exist after object save in Celery task
  2. 最后 - 我将这行代码添加到svae_model()方法的末尾,它解决了问题:

    my_list = list(models.MyObject.objects.all())
    

    我不确定为什么这会解决这个问题 - 它会强制Django根据这些文章重新评估QuerySet:

    1. Django lazy QuerySet and pagination
    2. https://docs.djangoproject.com/en/1.5/ref/models/querysets/
    3. 没有性能影响,到目前为止,我还没有再看到这个问题。

      我不完全理解为什么这会解决这个问题,所以我会很感激任何见解:

      1. 为什么这项工作似乎解决了这个问题?
      2. 首先是关于问题原因的任何见解?
      3. 我在将项目添加到DB的方法中使用@ transaction.commit_on_success - 但正如我所说,我认为问题是当Django尝试显示分页列表屏幕时 - 它无法找到新创建的对象。

        提前感谢您的帮助 - 非常感谢!

0 个答案:

没有答案