Google App Engine – как расширить db.IntegerProperty

Поскольку я часто меняю местами между целым и строковым, я надеялся расширить db.IntegerProperty. Ниже приведены некоторые фрагменты кода и сообщение об ошибке, которое я получаю в журнале приложений App Launcher. Любые указатели? Спасибо, Дэвид

class FSIdProperty(db.IntegerProperty): def getasstring(self): value = super(FSIdProperty, self) if value: return "%01d" % value else: return '' def setasstring(self, value): if isinstance(value, str): value = value.replace(',', '') value = value.replace(' ', '') newvalue = super(FSIdProperty, self) newvalue = int(value) return newvalue asstring = property(getasstring, setasstring) ... class dcccategory(db.Model): categoryid = FSIdProperty(verbose_name="Category Id") sortorder = FSIdProperty(verbose_name="Sort Order") description = db.StringProperty(verbose_name="Description") created_at = UtcDateTimeProperty(verbose_name="Created on", auto_now_add=True) modifiedon = UtcDateTimeProperty(verbose_name="Modified on", auto_now=True) modifiedby = db.UserProperty(verbose_name="Modified by", auto_current_user=True) ... outopt = { 'formtitle': 'Category Maintenance', 'categoryid': pcategory.categoryid.asstring(), 'sortorder': pcategory.sortorder.asstring(), 'description': pcategory.description, 'categorys': pcategorys, 'formerror': ''} ... File "C:\_PythonApps\costcontrol\fcccategorymaint.py", line 17, in displayone 'categoryid': pcategory.categoryid.asstring(), AttributeError: 'int' object has no attribute 'asstring' 

2 Solutions collect form web for “Google App Engine – как расширить db.IntegerProperty”

Я предлагаю вам прочитать эту статью https://developers.google.com/appengine/articles/extending_models

Я бы рекомендовал переключиться на NDB. В NDB очень просто написать подкласс IntegerProperty, который хранит значения как целые числа, но принимает либо целые числа, либо строки (преобразование строк в целые числа). Вот эскиз:

 class MyIntegerProperty(ndb.IntegerProperty): def _validate(self, val): if isinstance(val, basestring): return int(val) 

Это все!

  • Отправка электронной почты от имени пользователя Google Apps
  • AppEngine Создание моделей ndb json serializable
  • Как выполнить авторизацию в BigQuery на Google Compute Engine?
  • Облачные конечные точки с несколькими классами служб
  • GCM получает недопустимые токены при отправке на несколько устройств одновременно
  • Повторная попытка создания конвейера App Engine python
  • Как служба разминки работает в движке Google для python?
  • Импорт контактов Google с использованием oauth2.0
  • Python - лучший язык программирования в мире.