У меня есть приложение Django, в котором у меня есть несколько проектов. Каждый проект может иметь несколько бюджетов, и каждый раз, когда в проект добавляется новый бюджет, существующие бюджеты для этого проекта должны иметь увеличенный на один version_number
. «Текущий» бюджет должен быть бюджет которого version_number
является 0- поэтому при попытке «получить» текущий бюджет для использования в других местах в коде, я делаю такие вещи, как:Python- как получить объект, у которого поле даты имеет самое последнее значение из списка объектов?
budgetInstance = Budget.objects.get(project = project, version_number = 0)
Однако, кажется, что-то , некоторые из проектов оказались с номером budgets
, version_number
- 0, поэтому кажется, что некоторые из проектов в базе данных, похоже, имеют несколько «текущих бюджетов» ...
Я знаю, что мне понадобится чтобы исправить логику того, как выполняется управление версиями, так что никакие два budgets
не могут иметь то же самое version_number
, но пока я просто хочу получить последние budget
для каждого проекта в базе данных.
Budget
Каждый объект имеет атрибуты, такие как: project_id
, version_number
, id
, presentation_date
и т.д.
Так что я теперь хочу, чтобы фильтровать budgets
, которые были возвращены, когда я фильтруется version_number = 0)
их presentation_date
поле. Как я понимаю, я хотел бы сделать это с помощью min()
, но я не могу показаться, чтобы получить эту работу ...
Я попытался следующий принятый ответ на: Find oldest/youngest datetime object in a list и побежал следующее в оболочке:
mostRecentBudget = min(date for date in budgets.dates if date < now)
Но я получил TypeError
, в котором говорилось:
TypeError: 'instancemethod' object is not iterable
Почему это? Как я могу искать в списке Budgets
в заданном Project
, для значения с последним значением presentation_date
?
Вам понадобится дополнительная информация. Что такое 'бюджеты' и' budgetgets.dates' здесь? И почему вы не можете использовать db для заказа этого запроса? –