更新 table 个字段

Updating table fields

有一个带有时间表模块(自制)的odoo系统。 它是如何工作的:工人来了——到达时间写在时间表上——一切都很好。 但是有一个问题:负责制作此类记录的员工正在使用不同的计时格式:他们中的一些人使用标准 HH:MM(例如 10:30),而另一些人使用十分之一 HH:T(例如10.5,这意味着相同的10:30甚至10.125(10:08)),所以我不得不做一个转换函数。

工作已经完成,它可以工作,但我敢打赌有办法优化它。至少,它的最后一部分。

@api.one
def time_button (self):
    def ftohhmm(a):
       if a:
          a = re.sub(',' , '.' , a)
          if (re.search ('^\-?\d+((,|\.)\d+)?$',a) >= 0): 
             if float(a) <24: 
                a = float(a) * 60
                minutes = a%60
                hours = a/60
                if int(round(minutes)) < 10:
                   return str(int(hours))+":0"+str(int(round(minutes)))
                else:
                   return str(int(hours))+":"+str(int(round(minutes)))
       return a
    if self.format:
       for i in self.ids_string:
          i.hours1=ftohhmm(i.hours1)
          i.hours2=ftohhmm(i.hours2)
          i.hours3=ftohhmm(i.hours3)
          i.hours4=ftohhmm(i.hours4)
          i.hours5=ftohhmm(i.hours5)
          i.hours6=ftohhmm(i.hours6)
          i.hours7=ftohhmm(i.hours7)
          i.hours8=ftohhmm(i.hours8)
          i.hours9=ftohhmm(i.hours9)
          i.hours10=ftohhmm(i.hours10)
          i.hours11=ftohhmm(i.hours11)
          i.hours12=ftohhmm(i.hours12)
          i.hours13=ftohhmm(i.hours13)
          i.hours14=ftohhmm(i.hours14)
          i.hours15=ftohhmm(i.hours15)
          i.hours16=ftohhmm(i.hours16)
          i.hours17=ftohhmm(i.hours17)
          i.hours18=ftohhmm(i.hours18)
          i.hours19=ftohhmm(i.hours19)
          i.hours20=ftohhmm(i.hours20)
          i.hours21=ftohhmm(i.hours21)
          i.hours22=ftohhmm(i.hours22)
          i.hours23=ftohhmm(i.hours23)
          i.hours24=ftohhmm(i.hours24)
          i.hours25=ftohhmm(i.hours25)
          i.hours26=ftohhmm(i.hours26)
          i.hours27=ftohhmm(i.hours27)
          i.hours28=ftohhmm(i.hours28)
          i.hours29=ftohhmm(i.hours29)
          i.hours30=ftohhmm(i.hours30)
          i.hours31=ftohhmm(i.hours31)

Hours1-31 是每天的列。行是给工人的。十字路口的单元格包含工人来的确切时间。

任何关于如何优化它的建议都会很棒。谢谢!

for i in self.ids_string:
    for j in range(1, 32):
        if hasattr(i, "hours%s" % j):
            a = getattr(i, "hours%s" % j)
            setattr(i, "hours%s" %j, ftohhmm(a))

也许这个答案就是您的需要。