将模型存储为字典
项目描述
django-modeldict
已弃用:此项目不再维护。 我(Adam Johnson)不再有时间继续维护此项目。我这样做是为了支持 gargoyle-yplan,这是我前雇主YPlan的一个分支。如果您想赞助持续维护或自己接管,请与我联系 me@adamj.eu。
ModelDict 是将设置等数据存储在数据库中的非常高效的方法。整个模型(懒加载)将转换为字典,并存储在您的缓存中。仅在需要时(在进程和基于 CACHE_BACKEND)失效。
它最初由 Disqus 创建,但由于不活跃,我们在YPlan接管了这个分支的维护。
要求
与以下所有组合进行测试
Python: 3.6
支持Django:1.11、2.0、2.1、2.2
支持Python 3.4及以上版本。
安装
使用
pip
进行安装pip install django-modeldict-yplan
如果您从原始版本升级到这个分支,请确保先运行 pip uninstall django-modeldict - 这些包冲突。
示例用法
# You'll need a model with fields to use as key and value in the dict
class Setting(models.Model):
key = models.CharField(max_length=32)
value = models.CharField(max_length=200)
# Create the ModelDict...
settings = ModelDict(Setting, key='key', value='value', instances=False)
# And you can treat it like a normal dict:
# Missing values = KeyError
settings['foo']
>>> KeyError
# Sets supported
settings['foo'] = 'hello'
# Fetch the current value using normal dictionary access
settings['foo']
>>> 'hello'
# ...or by normal model queries
Setting.objects.get(key='foo').value
>>> 'hello'
历史记录
待发布
2.0.3 (2019-05-17)
已弃用:此项目不再维护。 我(Adam Johnson)不再有时间继续维护此项目。我这样做是为了支持 gargoyle-yplan,这是我前雇主YPlan的一个分支。如果您想赞助持续维护或自己接管,请与我联系 me@adamj.eu。
2.0.2 (2019-04-28)
与Django 2.2测试,无需任何兼容性更改。
2.0.1 (2019-02-15)
没有功能上的更改。这是2.0.0版本的重新发布,以修复PyPI上的不可变元数据,以便Python 2的Pip不会选择只支持Python 3的2.X系列。2.0.0版本将于2019年3月1日从PyPI中删除。
2.0.0 (2019-01-29)
本版本将删除PyPI,请按照其上述发布说明使用2.0.1版本。
停止支持Python 2,现在只支持Python 3.4及以上版本。
停止支持Django 1.8、1.9和1.10。现在只支持Django 1.11及以上版本。
从ModelDict中删除iteritems()、iterkeys()和itervalues()方法,并将items()、keys()和values()移动到Python 3语义,返回迭代器而不是列表。
在wheel中包含LICENSE文件。
与Django 2.1测试,无需任何兼容性更改。
1.5.4 (2016-10-28)
修复了线程代码中的竞争条件。有关详细解释,请参阅 https://github.com/adamchainz/django-modeldict/pull/40。感谢@Jaidan。
1.5.3 (2016-09-20)
停止将time.time()四舍五入到最接近的整数,这样我们可以在过期方面更加细致。这也可能修复了关于不必要地重新获取远程缓存的微妙的时间错误。
1.5.2 (2016-07-31)
修复了当_local_last_updated即使在未更新时也能设置时缺失的更新。
修复了时间比较中的整数四舍五入导致的更新缺失。
修复了CachedDict.__repr__,使其适用于CachedDict的其他子类(不要假设存在self.model)。
1.5.1 (2016-06-13)
修复了本地缓存永远不会过期的情况,如果值被检查得太频繁。
使用Django的cache.set_many进行更高效的存储。
1.5.0 (2016-01-11)
由YPlan分支。
修复了线程Django服务器的TOCTTOU并发问题。
停止在包中包含“tests”目录。
支持Django 1.8和1.9。
添加了Python 3支持。
修复了setdefault()以返回设置/找到的值,符合正常的dict语义。感谢@olevinsky。
1.4.1 (2012-12-04)
最后由Disqus发布。
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
哈希值 for django_modeldict_yplan-2.0.3-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 309b593db6ff68a0d338a55669604eb7dfc133c3c52bebfa0bd0239ca1a47ffd |
|
MD5 | 3cc87f4b2caff0af6362335a3434c9cb |
|
BLAKE2b-256 | bc85e0c1bba526a210680f224669ffda7cd4ed6e4897f4f36c57b6f2d3d7a9ee |