基于声明字典的python模型类

remotemodels的Python项目详细描述


#remotemodels

由于"micromodels"没有被激活维护,所以我自己使用它并进行调整。


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


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



暂停remotemodels

_姓名(自我):
返回%s%s"%(自我.名字,自我.姓氏)




douglas数据{
"名字":"douglas",
"姓氏":"adams",
"出生日期":"1952-03-11",




prin%s出生于%s%(douglas.full)douglas出生于%s)%(douglas.full)出生于%s)%(douglas.你的名字,douglas.date_birth.strftime("%y")


dels.charfield()
description=remote model s.charfield()

def get_profile_url(self):
return'http://twitter.com/%s'%self.screen_name



class tweet(remotemodels.model):
id=remotemodels.integerfield()
text=remotemodels.charfield()
created_at=remotemodels.datetimefield(format="%a%b%d%h:%m:%s+0000%y")
user=remotemodels.modelfield(twitteruser)


tweet=tweet.from_dict(json\data,is_json=true)


print tweet.user.name
print tweet.user.get_profile_url()
打印tweet.id
print tweet.created\u at.strftime('%a')


dict(仍然包含时间对象)
print tweet.to_dict()


它还可以被转换为json(字段处理自己的序列化)
print tweet.to_json()

tweet.to_json()相当于这个调用
json.dumps(tweet.to_dict(serial=true))



字段选项

以下可选参数对所有字段类型都可用。

例如:

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

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

如果要更改此值,可以将"source"参数传递给每个字段实例:

class示例模型(remotemodels.model):
myfield=remotemodels.charfield()
another field=remotemodels.charfield(source='some'other'u field')

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

pes

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

\integerfield

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


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


=remotemodels.datetimefield()

可以提供可选格式。

mymodel类(remotemodels.model):
created_at=remotemodels.date timefield()




fieldcollectionfield

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

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


mymodel类(remotemodels.model):
第一个列表=remotemodels.fieldcollectionfield(remotemodels.integerfield)
second_list=remotemodels.fieldcollectionfield(remotemodels.charfield)

>>;>m=mymodel(一些_数据)
>;>m.first_list
[0,34,42]
>;>m.second_list
[u'first_item',u'second_item',u'third_item']

modelfield

如果要将一个对象嵌套到另一个对象中,请使用此字段。它接受一个必需的参数,即嵌套类。例如,给定以下字典:

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

首先是内部嵌套模型:

class mynestedmodel(remotemodels.model):
nested\u item=remotemodels.charfield()

class mymainmodel(remotemodels.model):
first\u item=remotemodels.charfield()
second\u item=remotemodels.modelfield(mynestedmodel)#传递嵌套模型的类

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

>>;>m=mymainmodel(某些数据)
>;>m.第一个项目
u'some value'
>;>m.第二个项目。'mynestedmodel'
>;>m.s第二个项。嵌套项
u"某些嵌套值"

"modelfield"采用可选的"related\u name"参数。
`related庘name`是相关模型用来引用外部模型的名称:


class person(model):
name=charfield()
car=modelfield(car,related庘name="owner")

class car(model):
make=charfield()
model=charfield()

>;>person=person.from_dict(some_data)
>;>person.car.owner==person
true

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

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

value=remotemodels.charfield()


class mymainmodel(remotemodels.model):
list=remotemodels.modelcollectionfield(mynestedmodel)

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

"ModelCollectionField"采用可选的"re"related"name"参数的作用与"modelfield"相同。

(un)license


源代码形式或作为编译二进制文件,用于任何目的,商业或非商业目的,并以任何方式。


在承认版权法的司法管辖区,本软件的作者将本软件的任何和所有版权权益奉献给公共领域。我们这样做是为了广大公众的利益,也是为了我们的继承人和继承人的利益。我们打算将此承诺作为一项公开的行为,永久放弃版权法下对本软件的所有现有和未来权利。


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

icense.org/>;

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

推荐PyPI第三方库


热门话题
playframework Play Framework 2.5表单对象bean(Java)中的依赖项注入   java从javascript触发小程序按钮   JavaGWT:如何创建我自己的异步方法?   对于JTA事务类型,java JPA更改不会持久化   java如何使用预定义的甲板类制作Black Jack游戏   带有数组的java HashMap find()   从Java中的另一个类接收对象数组的参数?   java IntelliJ错误:Scala 145,错误:scalac:找不到Scala编译器JAR   java Eclipse 404请求的资源不可用   java Chuck没有界限   java阅读行每隔一行跳过一行   java如何访问我的EAR部署信息   Java中的正则表达式,其中执行搜索的文本是动态变化的   java我需要优化BigInteger的toString()方法   java Google Map Api V2,自定义路线标记   java如何在Java8中与LocalDate实现更少的需求和更高的质量   EclipseUML插件生成Java源代码   将数据库列绑定到java jComboBox和JList   java如何将两个图像合并为PDF