Значение имеет неверный формат и должно иметь вид ГГГГ-ММ-ДД ЧЧ: ММ

Я работаю с django 1.6 и получаю сообщение об ошибке в последней строке моего кода:

start__gte=min_date, start__lte=max_date)

Вот ошибка:

[U "'start__min' value has an invalid format and must be of the form YYYY-MM-DD HH: MM [: ss [.uuuuuuu]] [TZ]"

Вот моя функция:

def person_coming_events(person):
    active_seasons = Season.objects.filter(is_active=True)
    min_date, max_date = active_seasons.aggregate(Min('start'), Max('end'))
    production_ids = SeasonProduction.objects.filter(season__in=active_seasons).values_list('production_id', flat=True)
    return Activity.objects.filter(production_id__in=production_ids, cast__person=person,
                                   start__gte=min_date, start__lte=max_date)

1 ответ

Агрегация возвращает словарь из двух элементов. Распаковка словаря, как вы сделали, возвращает только ключи словаря в min_date а также max_date; это означает, что они назначены на строки 'start__min' а также 'end__max', которые не являются действительными значениями даты.

Вместо этого вы должны получить доступ к соответствующему ключу словаря и назначить значения даты для ваших переменных:

agg = active_seasons.aggregate(Min('start'), Max('end'))
min_date, max_date = agg['start__min'], agg['end__max']

Кстати, вы должны рассмотреть возможность обновления с Django1.6

Другие вопросы по тегам