基于声明字典的python模型类

micromodels的Python项目详细描述


#微模型

一个基于数据字典构建模型类的简单库。


非常适合(除其他外)将python对象包装在基于web的api返回的json数据周围。

**作者**:jamie matthews(<;https://github.com/j4mie>;)和Eric Martin(<;https://github.com/lightcatcher>;).

安装


非常简单的示例

=micromodels.datefield(format="%y-%m-%d")

@property
def full\u name(self):
返回"%s%s"%(self.first\u name,self.last\u name)


douglas\u data={
"first\u name":"douglas",
"last\u name":"adams",
"出生日期":"1952-03-11",
}


douglas=作者。摘自dict(douglas_data)
print"%s出生于%s"%(douglas.full_name,douglas.date_birth.strftime("%y")


=micromodels.charfield()
name=micromodels.charfield()
description=micromodels.charfield()

def get_profile_url(self):
返回http://twitter.com/%s%self.screen_name


class tweet(micromodels.model):
id=micromodels.integerfield()
text=micromodels.charfield()
创建时间=micromodels.datetimefield(格式="%a%b%d%h:%m:%s+0000%y")
user=micromodels.modelfield(twitteruser)


json数据=urlopen('http://api.twitter.com/1/statuses/show/20.json').read()
tweet=tweet.from_dict(json_数据,is_json=true)


print tweet.user.name
print tweet.user.get_profile_url()
print tweet.id
print tweet.created_at.strftime('%a')

序列化

tweet.add戋field('retweet戋count',44,micromodels.integerfield())
print tweet.retweet戋count

序列化)
打印tweet.to_json()

tweet.to_json()等同于此调用
json.dumps(tweet.to_dict(serial=true))



####` source`

默认情况下,模型类将在其源数据中查找与其每个字段同名的键。例如:

class example model(micromodels.model):
myfield=micromodels.charfield()

>;>e=examplemodel({'myfield':'some value'})
>;>e.myfield
u'some value'

您可以将"source"参数传递给每个字段实例:


Class ExampleModel(micromodels.model):
MyField=micromodels.charField()
AnotherField=micromodels.charField(source='some砦other砦field')

>;>;e=examplemodel({'myfield':'some value','some戥other戥field':'another value'})
>;>;e.anotherfield
u'another value'


basefield

完全改变它。

charfield

**将尝试将其提供的数据转换为Unicode。**

integerfield

如果数据是字符串,"true"(不区分大小写)将转换为"true",所有其他字符串将转换为"false"。如果提供的数据是整数,则正数将变为"true",负数或零将变为"false"。




mymodel类(micromodels.model):
created_at=micromodels.datetimefield()

可以提供可选格式。

m y model类(micromodels.model):
created_at=micromodels.datetimefield(format="%a%b%d%h:%m:%s+0000%y")


有关格式字符串的详细信息,请参阅[python
文档](http://docs.python.org/library/datetime.html\strftime strptime behavior)
。例如:

datefield


作为
`iso8601`或使用选项"format"参数(有关详细信息,请参见"datetimefield"。


它接受一个必需的参数,该参数是用于转换列表中每个项的字段类型。例如:

一些数据={
"第一个列表":[0,34,42],
"第二个列表":["第一个列表","第二个列表","第三个列表"],
}


mymodel类(micromodels.model):
第一个列表=micromodels.fieldcollectionfield(micromodels.integerfield)
第二个列表=微模型。fieldcollectionfield(micromodels.charfield)

>;>m=我的模型(一些数据)
>;>m.第一个列表
[0,34,42]
>;>m.第二个列表
[u'第一个项目',u'第二个项目',u"第三项"]

modelfield

它接受一个必需的参数,即嵌套类。例如,给定以下字典:

some嫒data={
'first嫒item':'some value',
'second嫒item':{
'nested嫒item':'some nested value',
},
}

首先是内部嵌套模型:

类MyNestedModel(microModels.model):
嵌套项=microModels.charfield()

类MyMainModel(microModels.model):
第一个项=microModels.charfield()
第二个项=microModels.modelfield(MyNestedModel)#传递嵌套模型的类

,然后您可以按如下方式访问数据:

>;>m=mymainmodel(some廑data)
>;>m.first廑item
u'some value'
>;>m.second廑item.\uu class廑uu name廑uu
'mynestedmodel'
>;>m.second_item.nested_item
u'some nested value'


它接受一个必需的参数,该参数是列表中每个项都应转换为的嵌套类的名称。例如:

some_data={
'list':[
{'value':'first value'},
{'value':'second value'},
{'value':'third value'},
]
}


类mynestedmodel(micromodels.model):
值=micromodels.charfield()

类mymainmodel(micromodels.model):
list=微模型。modelcollectionfield(mynestedmodel)

>;>;m=mymainmodel(某些数据)
>;>;len(m.list)
3
>;>;m.list[0]。\uu class\uu name\uu
"mynestedmodel"
>;>;m.list[0].value
u"第一个值"
>;[m.list中的项的项的值]
[u"第一个值",u"第二个值",u"第三个值"]




(un)许可证

这是发布到公共域的免费且无负担的软件。

修改、发布、使用、编译、销售或以源代码形式或编译二进制文件的形式分发本软件,用于任何目的、商业或非商业目的,并以任何方式进行。

对公共领域软件的版权兴趣。我们这样做是为了广大公众的利益,也是为了我们的继承人和继承人的利益。我们打算将此承诺作为一项公开的行为,永久放弃版权法下对本软件的所有现有和未来权利。


本软件按"原样"提供,无任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者均不对任何索赔、损害或其他责任负责,无论是在合同、侵权或其他诉讼中,由软件或软件的使用或其他交易引起的、由软件引起的或与之相关的。


有关详细信息,请参阅<;http://unlicense.org/>;

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

推荐PyPI第三方库


热门话题
java中char的用途   swing修复,以便显示可以同时显示十进制数和整数   java给定一个场景,找到拥有的JFXPanel   java JPA 2标准获取路径导航   java如何用JUnit测试这个类?   JSF中的java请求作用域   Spring云Zuul代理背后的java Spring OAuth授权服务器   java限制聚合返回的存储桶大小   java如何在安卓应用程序中请求超级su权限   防止超级关键字的java Checkstyle规则   java 安卓。应用程序。应用程序无法强制转换到安卓。应用程序。在回收器适配器中使用FragmentManager时的活动   使用Java的Twitter广告API   切换到4.0.1版本后,java“JavaMailSenderImpl无法解析为类型”   java没有getter方法可用于名称下bean的属性   java 0/1背包堆空间   java我无法使用断点进行调试   Jar文件名表单java代码   java调用从扩展活动的MainActivity类扩展片段的类片段