Это генераторное выражение, и очень странно что оно написано оно, ибо sum не принимает генераторы, и должна быть ошибка, должно быть списковое включение:
return sum([rec.amount for rec in self.records
if rec.date == today])
Можно ли его записать более понятно (например через if)?
Можно, но зачем, это вам надо будет создавать отдельный список и в него добавлять элементы, зачем оно спрашивается
Что бы подробней узнать про такие выражения
вот вам источник
Поправка: ошибся, с генераторами тоже работает