是否可以检测模型属性的类型?
class MODULENAME(db.Model):
id1 = db.StringProperty()
id2 = db.StringProperty()
id3 = db.StringProperty()
property1 = db.StringProperty()
property2 = db.StringProperty()
createdate = db.DateProperty(auto_now_add=True)
changedate = db.DateProperty(auto_now_add=True)
isactive = db.BooleanProperty()
如何测试“id3”是int,float还是字符串?
到目前为止,我已经了解到模型有一个名为“_all_propertie”的方法,它返回一个列表,其中包含我在模型中创建的所有属性。现在我想检查属性类型,以便我可以使用正确的html输入类型自动生成表单,如果我更改属性类型,HTML将自动更改。
这有意义还是我离得太远了?
/迈克尔
答案 0 :(得分:1)
工作代码:
from google.appengine.ext import db
class MODULENAME(db.Model):
id1 = db.StringProperty()
id2 = db.StringProperty()
id3 = db.DateProperty()
property1 = db.StringProperty()
createdate = db.DateProperty(auto_now_add=True)
changedate = db.DateProperty(auto_now_add=True)
isactive = db.BooleanProperty()
m = MODULENAME()
plist = m.properties()
for p in plist:
print "%s: %s" % (p, str(plist[p]))
感谢Daniel Roseman和Nick Johnson提供的线索。
答案 1 :(得分:0)
您不想使用_all_properties
,因为这只会将字段名称作为一组字符串提供给您。
相反,您可以使用_properties
,它会为字段类型提供字段名称字典。反过来,每个字段类型都称为data_type
属性,顾名思义就是它接受的数据类型。
所以:
id3 = ModelName._properties['id3']
data_type = id3.data_type
现在data_type
包含type <int>
。
答案 2 :(得分:0)
试试这个:
for name, property in MyModel.properties().items():
print "Name: " + name + "; Type: " + str(property.data_type)
正如尼克约翰逊指出的那样,_properties
和_all_properties
不应该被使用,因为它们是内部的并且可能会发生变化。