В этой модели
class Rep(db.Model):
mAUTHOR = db.UserProperty(auto_current_user=True)
mUNIQUE = db.StringProperty()
mCOUNT = db.IntegerProperty()
mDATE = db.DateTimeProperty(auto_now=True)
mDATE0 = db.DateTimeProperty(auto_now_add=True)
mWEIGHT = db.IntegerProperty()
Я хочу сделать:
mWEIGHT = mCOUNT / mDATE0
внутри этого цикла for
for i in range(len(UNIQUES)):
C_QUERY = Rep.all()
C_QUERY.filter("mAUTHOR =", user)
C_QUERY.filter("mUNIQUE =", UNIQUES[i])
C_RESULT = C_QUERY.fetch(1)
if C_RESULT:
rep=C_RESULT[0]
rep.mCOUNT+=COUNTS[i]
# how to convert mDATE0 to integer so that I can divide:
# rep.mWEIGHT = rep.mCOUNT / rep.mDATE0
rep.put()
else:
C = COUNTS[i]
S = UNIQUES[i]
write_to_db(S, C)
Я задавал тот же вопрос в нескольких другихфорумы, и я получил хороший и ценный совет, но я все еще не могу заставить этот код работать, потому что я запутался (объекты, экземпляр, datetime.datetime, секунды, секунда и т. д.) Например, я думал, что
mWEIGHT = mCOUNT / rep.mDATE0.second
превратит mDATE0 в секунды;но это не так, он просто берет вторую часть из 2010-11-12 18:57:27.338000
, т. е. 27.
И
mWEIGHT = mCOUNT / mDATE0.date
выдает сообщение об ошибке несоответствия типов.
Я такжепробовал
rep.mWEIGHT = rep.mCOUNT / rep.mDATE0.toordinal()
это дает число, подобное 734088
, но все предметы имели одинаковое число.
См. также мой предыдущий вопрос на ту же тему.
Спасибо за вашу помощь.
EDIT3
Это работает, спасибо!
if C_RESULT:
rep = C_RESULT[0]
rep.mCOUNT+=COUNTS[i]
utc_tuple = rep.mDATE0.utctimetuple()
# this is actually float not integer
mDATE0_integer = time.mktime(utc_tuple)
mDATE0_day = mDATE0_integer / 86400
rep.mWEIGHT = float(rep.mCOUNT / mDATE0_day)
rep.put()
EDIT2 @Constantin: я понял, что числа должны быть числами с плавающей точкой:
>>> mCOUNT = 35
>>> div = mCOUNT / mDATE0
>>> div
0
>>> div = float(mCOUNT) / float(mDATE0)
>>> div
2.7140704010987625e-08
>>>
Не уверен, как включить это в сценарий.Любые предложения?
РЕДАКТИРОВАТЬ
@ Константин:
Для элемента
C_RESULT [0] = "новый элемент"
это результат, который я получаю.
new item:
rep: <__main__.Rep object at 0x052186D0>
mDATE0_integer: 1289575981
rep.mCOUNT: 35
rep.mWEIGHT: 0
Итак
mDATE0_integer = int(time.mktime(rep.mDATE0.utctimetuple()))
работает и дает целое число 1289575981
, но это деление
rep.mWEIGHT = rep.mCOUNT / mDATE0_integer
приводит к 0. Любые предложения?