使用redis将元数据附加到任何django模型

django-metadata的Python项目详细描述


使用redis将元数据附加到任何django模型。

Build Status

安装

GitHub中签出包,或者通过pypi从发行版中提取包:

pip install django-metadata

用法

使用django-metadata可以将元数据附加到任何django模型,您将 能够将键及其值链接到任何实例。

目前只支持Redis,后端只支持redis-py

假设您有这个型号:

# models.pyfromdjango.dbimportmodelsclassUser(models.Model):username=models.CharField(max_length=150)

现在您必须将MetadataMixin附加到您的模型:

# models.pyfromdjango.dbimportmodelsfrommetadata.mixinsimportMetadataMixinclassUser(MetadataMixin,models.Model):username=models.CharField(max_length=150)

您可以通过提供 模型的metadata_key属性:

# models.pyfromdjango.dbimportmodelsfrommetadata.mixinsimportMetadataMixinclassUser(MetadataMixin,models.Model):username=models.CharField(max_length=150)defmetadata_key(self):return'metadata:utilisateur:%d'%self.pk

默认情况下,架构将是metadata:%(lowerclassname)s:%(primary_key)s

现在我们已经把我们的模型连接到了MIXIN,我们可以用API来玩。

MetadataContainer的api遵循与dict相同的原理。

添加键

>>>frommyapp.modelsimportUser>>>user=User.objects.create(username='thoas')>>>user.metadata['mail_signup_sent']=1>>>user=User.objects.get(username='thoas')>>>user.metadata['mail_signup_sent']1>>>user.metadata={'mail_signup_sent':0}>>>user.metadata['mail_signup_sent']0

取下钥匙

可以通过将键的值设置为None来删除键,也可以使用del 接线员。

>>>deluser.metadata['key']>>>user.metadata['key']Traceback(mostrecentcalllast):...KeyError:'key'>>>user.metadata.get('key',None)None>>>user.metadata['foo']='bar'>>>user.metadata['foo']=None>>>user.metadata['foo']Traceback(mostrecentcalllast):...KeyError:'foo'>>>user.metadata.get('foo',None)None>>>user.metadata['key']='value'>>>user.metadata['foo']='bar'>>>user.metadata={'foo':None}>>>user.metadata['foo']Traceback(mostrecentcalllast):...KeyError:'foo'>>>user.metadata['key']value

迭代键

>>>'value'inuser.metadataTrue>>>user.metadata.values()['value']>>>user.metadata.keys()['key']>>>user.metadata.items()[('key','value')]

递增键

当我们使用redis作为存储引擎时,您可以使用它的一些不错的功能:

>>>user.metadata.incr('counter')>>>user.metadata['counter']1>>>user.metadata.incr('counter',2)>>>user.metadata['counter']3

灵感

django-metadata来自twidi的原始想法。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java是数据线。getMicrosecondPosition()线程安全?   java我可以设置多个。whereEqualTo在firestore查询中指向文档中的字段?   java Intellij 14 Glassfish服务器未连接。部署不可用   java JPA。如何返回null而不是LazyInitializationException   java TarsosDSP Clap检测   比较基于字符串的java枚举   java空指针异常日历。设定时间   java Hystrix在运行时忽略超时   将数据从Java RESTful服务器推送到Android手机上进行通知   java Jnotify delete vs shift delete问题   java安装失败\u没有匹配\u ABIS res113   TreeJava:传递未实例化的对象引用是如何工作的?   java如何使用Android ringtone manager从资产文件夹播放铃声?   java在Dropwizard的不同状态下使用不同的模拟