跳转到主要内容

将模型存储为字典

项目描述

django-modeldict

https://img.shields.io/pypi/v/django-modeldict-yplan.svg https://travis-ci.org/adamchainz/django-modeldict.svg?branch=master

已弃用:此项目不再维护。 我(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)

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发布。

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

django-modeldict-yplan-2.0.3.tar.gz (14.0 kB 查看散列值)

上传时间

构建分布

django_modeldict_yplan-2.0.3-py3-none-any.whl (15.6 kB 查看散列值)

上传时间 Python 3

由以下支持