Django python脚本为什么我的循环没有完成?

2024-06-24 13:08:33 发布

您现在位置:Python中文网/ 问答频道 /正文

Django/Python新手。有一个调用时未完成的函数。没有错误,它只是停止并返回python命令提示符。它执行第一个while循环,但在到达下一个“print”命令之前停止,并将我带回提示符。执行的一切都是正确的。我肯定我错过了一些基本的东西。函数如下:

def create_carpool(family, start_date, end_date, name):
    carpool = Carpool()
    carpool.name = name
    carpool.save()
    current_date = start_date

    while current_date <= end_date:
        print 'Processing ' + current_date.strftime('%m/%d/%Y') + ' going to ' + end_date.strftime('%m/%d/%Y')
        if current_date.day not in (5,6):
            start_leg = Leg()
            start_leg.drive_date = current_date
            start_leg.start_time = START_TIME_AM
            start_leg.endpoint = ENDPOINT_AM
            start_leg.save()
            end_leg = Leg()
            end_leg.drive_date = current_date
            end_leg.start_time = START_TIME_PM
            end_leg.endpoint = ENDPOINT_PM
            end_leg.save()
            carpool.legs.add(start_leg)
            carpool.legs.add(end_leg)
        current_date += datetime.timedelta(days=1)

    print 'Adding driving preferences for all carpool legs.'
    num_legs = carpool.legs.all().count()
    leg_idx = 0
    for leg in carpool.legs.all():
        leg_idx += 1
        print 'Processing leg #' + str(leg_idx) + ' of ' + str(num_legs)
        for rider in Rider.objects.all():
            if choice(number_list) >= 4:
                leg.riders.add(rider)
        for driver in carpool.drivers.all():
            drive_preference = DrivingPreference()
            drive_preference.leg = leg
            drive_preference.driver = family.drivers
            drive_preference.preference = choice([1,2,3])
            drive_preference.save()
    return carpool

Tags: nameinfordatesavedrivecurrentall
1条回答
网友
1楼 · 发布于 2024-06-24 13:08:33

我想你可能需要.save()你的carpool对象在添加腿之后-否则腿数可能为零,因为在这个carpool对象上不会有另一个数据库命中。这就可以解释你的跳绳了。在

我认为循环前的腿数是零是对的吗?打印它,然后在添加腿部后尝试.save()处理carpool对象。。。在

只是个预感。在

相关问题 更多 >