基于声明字典的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/>;
由于"micromodels"没有被激活维护,所以我自己使用它并进行调整。
一个基于数据字典构建模型类的简单库。
非常适合(除其他外)将python对象包装在基于web的api返回的json数据周围。
暂停remotemodels
_姓名(自我):
返回%s%s"%(自我.名字,自我.姓氏)
douglas数据{
"名字":"douglas",
"姓氏":"adams",
"出生日期":"1952-03-11",
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)
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})
>;
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.第二个项目。
>;>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'},
]
}
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/>;