故事一个模型作为一个词典
django-modeldict-yplan的Python项目详细描述
django modeldict
retired:此项目不再维护。i(adam johnson)不再维护 有时间继续保持这一点。我这么做是为了支持 gargoyle-yplan,我的叉子 前雇主Yplan。如果你想赞助日常维护或接管 请自行联系me@adamj.eu。
ModelDict是在数据库中存储设置等内容的非常有效的方法。整个模型被转换成字典(懒散地)并存储在缓存中。它只有在需要时才失效(在处理中和基于CACHE_BACKEND)。
它最初是由Disqus创建的,但是由于不活动,我们在yplan接管了这个fork的维护。
要求
使用以下所有组合进行测试:
- Python:3.6
- django:1.11、2.0、2.1、2.2
支持Python3.4+。
安装
用pip安装它:
pip install django-modeldict-yplan
如果要从原来的fork升级到这个fork,请确保首先是pip uninstall django-modeldict包冲突。
示例用法
# You'll need a model with fields to use as key and value in the dictclassSetting(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 = KeyErrorsettings['foo']>>>KeyError# Sets supportedsettings['foo']='hello'# Fetch the current value using normal dictionary accesssettings['foo']>>>'hello'# ...or by normal model queriesSetting.objects.get(key='foo').value>>>'hello'
历史记录
待发布
2.0.3(2019-05-17)
- retired:此项目不再维护。i(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系列。version 2.0.0将于2019-03-01从PYPI中提取。
2.0.0(2019-01-29)
此版本将从pypi中提取,请根据使用版本2.0.1 上面的发行说明。
- 放弃Python2支持,现在只支持Python3.4+
- 放下Django 1.8、1.9和1.10支架。现在只支持django 1.11+。
- 从中删除iteritems()、iterkeys()和itervalues()方法 ModelDict,并将items()、keys()和values()移动到python 3 语义,返回迭代器而不是列表。
- 在控制盘中包含许可证文件。
- 用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__,因此它适用于 {tt14} $比^ {tt1}$(不要假定^ {tT16} $存在)
1.5.1(2016-06-13)
- 修复了值检查太频繁时从不过期的本地缓存。
- 使用django的cache.set_many可以获得更高效的存储。
1.5.0(2016-01-11)
- 伊普兰分岔
- 修复了线程django服务器的并发toctou错误。
- 已停止在包中包含“tests”目录
- 支持django 1.8和1.9。
- 增加了Python3支持。
- 修复了setdefault()以返回根据正常dict sem设置/找到的值滑稽动作。谢谢@Olevinsky。
1.4.1(2012-12-04)
- 由DISPS发布的最新版本