小编Ego*_*kov的帖子

更新时的Ecto.StaleEntryError

有时我(Ecto.StaleEntryError) attempted to update a stale struct在尝试更新记录时会得到.我没有在Ecto的文档中找到任何避免这种情况的方法,那么我该怎么做才能避免这种情况呢?

PS我通过Postgrex,Ecto 2.1.3使用PostgreSQL 9.6.

postgresql erlang elixir ecto phoenix-framework

7
推荐指数
1
解决办法
1818
查看次数

在 Django 的 settings.py 中导入模型

我正在尝试使用模型类的值定义一个常量,settings.py以便为我的模型之一提供动态定义的 FK:

from catalog.models import Product
PRODUCT_MODEL = Product
Run Code Online (Sandbox Code Playgroud)

毫不奇怪,它会导致AppRegistryNotReady异常:

django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
Run Code Online (Sandbox Code Playgroud)

因为没有调用django.setup()方法。

如果我添加

import django
django.setup()
Run Code Online (Sandbox Code Playgroud)

在模型的导入之前,而不是AppRegistryNotReady例外,我得到

AttributeError: 'Settings' object has no attribute 'PRODUCT_MODEL'
Run Code Online (Sandbox Code Playgroud)

当我使用

from django.conf import settings
...

product = models.ForeignKey(
    settings.PRODUCT_MODEL, 
    related_name='order_items')
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以实现这一点而不会出错?

我使用的是 Python 3.5 和 Django 1.9.5。

python django django-models django-settings python-3.x

4
推荐指数
1
解决办法
3699
查看次数

Django QuerySets和缓存

我在一些对象管理器中有一个方法,它从db获取数据:

def products(self, offset=None)
Run Code Online (Sandbox Code Playgroud)

如果没有offset通过,它只返回所有对象(大约5000,而不是那么多).如果offest它返回,那么,具有偏移的对象.

这种方法在应用程序生命周期中使用了很多.我想以某种方式缓存其结果是合理的.

我的问题是:会functools.lru_cache做这个工作还是我应该考虑使用Django的缓存?或者也许我不应该过早地考虑它?

django optimization caching query-optimization

3
推荐指数
1
解决办法
6992
查看次数