Проверка типа свойства в модели Google App Engine - PullRequest
1 голос
/ 20 сентября 2011

Можно ли определить тип свойства модели?

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 или string?

До сих пор стало известно, что в модели есть метод "_all_propertie", который возвращает список со всеми свойствами, которые я создал в модели.Теперь я хочу проверить тип свойства, чтобы я мог автоматически создать форму с правильными типами ввода html, и если я изменю тип свойства, HTML изменится автоматически.

Имеет ли это смысл или я тожедалеко от следа?

/ Майкл

Ответы [ 3 ]

1 голос
/ 21 сентября 2011

Рабочий код:

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]))

Спасибо за подсказки Дэниел Роузман и Ник Джонсон.

0 голосов
/ 19 октября 2012

Попробуйте это:

for name, property in MyModel.properties().items():
    print "Name: " + name + "; Type: " + str(property.data_type)

Как отметил Ник Джонсон, _properties и _all_properties не должны использоваться, поскольку они являются внутренними и могут изменяться.

0 голосов
/ 20 сентября 2011

Вы не хотите использовать _all_properties, так как это просто дает вам имена полей в виде набора строк.

Вместо этого вы можете использовать _properties, что дает вам словарьот имени поля к типу поля.Каждое из типов полей, в свою очередь, является свойством с именем data_type, которое, как следует из названия, является типом данных, которые оно принимает.

Итак:

id3 = ModelName._properties['id3']
data_type = id3.data_type

Сейчас data_type содержит type <int>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...