Всем привет. Народ, подскажите, где в коде изъян(?
Необходимо из таблицы «Заказов» выбрать только попадающие в интервал времени (даты) от date_from до date_to включительно. В таблице заказов поле «date_order» является отбычным varchar и записи в нем имеют формат - dd.mm.yyyy (прмер: 07.05.2014).
def convert(number):
"""
Конвертирует строку (день или месяц) в число
"""
if (number[0] == "0"):
month_num = int(number[1])
else:
month_num = int(number)
return month_num
def unconvert(number):
"""
Конвертирует число в сторку (день или месяц)
"""
if len(str(number)) == 1:
return "0%s" % number
else:
return "%s" % number
...
# Получам данные из POST и разделяем на подстроки по точке.
date_from = request.POST["date_from"].split(".")
date_to = request.POST["date_to"].split(".")
# Выбираем день, месяц и год даты начала и даты конца
day_from = date_from[0]
month_from = date_from[1]
year_from = date_from[2]
day_to = date_to[0]
month_to = date_to[1]
year_to = date_to[2]
orders_list = []
if year_from == year_to:
if month_from == month_to:
for i in xrange( convert(day_from), convert(day_to) ):
date = "%s.%s.%s" % (unconvert(i), month_from, year_from)
try:
orders_list.append(Order.objects.get(date_order=date))
except:
print("not found")
else:
for i in xrange( convert(month_from), convert(month_to)+1 ):
for j in xrange( convert(day_from), convert(day_to) ):
date = "%s.%s.%s" % (unconvert(j), unconvert(i), year_from)
try:
orders_list.append(Order.objects.get(date_order=date))
except:
print("not found")
...
Но код не работает в перделах более 1 месяца. Например, я хочу выбрать все заказы, начиная с 19.05.2014 и по 30.07.2014. В результате выбираются только заказы в месяце 05, а заказы в последующих месяцев не выбираюся. В пределах одного месяца все работает OK. В чем может быть косяк?
Заранее спасибо.