2012-06-03 1 views
0

나는 현재 날짜가 이미있는 항목이 있는지 확인하려고하고 있고 그렇지 않은 경우 추가 할 것입니다. 아래의 코드는 오류 메시지를 표시하지 않고, 내가 위의 댓글에서 언급 한 바와 같이이 MongoDB를MongoEngine과 함께 EmbeddedDocument에 항목을 추가하려면 어떻게합니까?

if len(site.DaylyLog) != 0: 
    print len(site.DaylyLog) 
    print site.DaylyLog[-1] 
    current_date_daylylog = site.DaylyLog[-1]['aggregate_date'] 
else: 
    current_date_daylylog = '' 

if current_date_daylylog == datetime.date.today(): 
    #update document 
    print current_date_daylylog 
    print "calculating averages" 

    site.DaylyLog[-1].average_response_time = (site.DaylyLog[-1].average_response_time+record_uptime.response_time)/2 
    site.DaylyLog[-1].average_uptime = (site.DaylyLog[-1].average_uptime+100)/2 

    site.save() 
else: 
    print current_date_daylylog 
    print "adding new uptime" 

    print site.url 
    aggregate_uptime = AggregatedUptime() 
    aggregate_uptime.average_response_time = record_uptime.response_time 
    aggregate_uptime.average_uptime = 100 
    aggregate_uptime.total_downtime = 0 
    aggregate_uptime.aggregate_date = datetime.date.today() 

    print aggregate_uptime.aggregate_date 
    print aggregate_uptime.average_response_time 

    site.DaylyLog.append(aggregate_uptime) 
    site.save() 

    print site.DaylyLog[-1].aggregate_date 
+1

가 너무 모델을 게시 할 수 있어야한다 때 :-)

오래된 모델은

class Checkr(Document): name = StringField() slug = SlugField() url = URLField() frequency = IntField() owner = IntField() start_date = DateTimeField() end_date = DateTimeField() current_response_time = FloatField() current_response_code = IntField() hourly_log = ListField(EmbeddedDocumentField(AggregatedUptime)) dayly_log = ListField(EmbeddedDocumentField(AggregatedUptime)) weekly_log = ListField(EmbeddedDocumentField(AggregatedUptime)) 

했다? – dm03514

+0

고마워. 문제는 모델에서 참조를 변경하고보기를 변경하는 것을 잊었습니다. :-) – gawry

+0

이 멀티 스레드를 실행합니까? 둘 이상의 스레드가 동일한 문서를 업데이트하려고 할 것이라는 우려가 있습니까? –

답변

0

에 아무것도 저장 아니에요. 내가 게시 한 코드는 괜찮 았지만 모델에서 변경 한 내용을 수정했습니다. 그것은 초보자 문제였습니다. 이

class Checkr(Document): 
name = StringField() 
slug = SlugField() 
url = URLField() 
frequency = IntField() 
owner = IntField() 
start_date = DateTimeField() 
end_date = DateTimeField() 
current_response_time = FloatField() 
current_response_code = IntField() 
HourlyLog = ListField(EmbeddedDocumentField(AggregatedUptime)) 
DaylyLog = ListField(EmbeddedDocumentField(AggregatedUptime)) 
WeeklyLog = ListField(EmbeddedDocumentField(AggregatedUptime))