0

可能重复:
Google App Engine - 如何扩展 db.IntegerProperty

这很可能是一个更通用的 Python 查询。

我试图通过添加一个方法来继承和扩展 GAE 中的 db.Property 类之一,该方法将返回一个特殊字符串值的整数表示,例如:

class DbHHMM(db.StringProperty):

   def to_mins(self):
      '''Convert the string to minutes''' 
      arr = re.split(":",self)
      ret = 0.0
      if (len(arr)==2):
         ret = (int(arr[0])*60)+(int(arr[1]))
      return ret;   

在我的模型中,我有一种方法可以总结一系列这些值,例如:

class WorkSchedule(db.Model):
    '''todo - core hours for the days
    TODO is there any way to attach a widgeted form to these via newform =  WorkScheduleForm() '''

    time1 = DbHHMM() 
    time2 = DbHHMM()
    total = db.IntegerProperty

    def sum_times:
      self.total = time1.to_mins + time2.to_mins

但是,当 sum_times 被调用时,我似乎得到了错误:

AttributeError: 'unicode' object has no attribute 'to_mins'

是否可以向 GAE 属性类添加额外的方法,用于防止这种情况的 Python 技术是什么?我做错了什么吗?

4

1 回答 1

2

您介意发布您的实际代码吗?您的“def sum_times:”甚至不是有效的 Python。

我的猜测是你想要这个,它会正常工作:

class WorkSchedule(db.Model):

    time1 = DbHHMM() 
    time2 = DbHHMM()
    total = db.IntegerProperty()  # ADDED ()

    def sum_times(self):  # ADDED (self)
        self.total = self.time1.to_mins() + self.time2.to_mins()  # ADDED self...() twice
于 2012-08-23T22:50:22.643 回答