rows = [('Frodo party', datetime(3018, 9, 22, 10, 38)), (
    'Nazgul defeat Rangers', datetime(3018, 9, 22, 11, 57)), (
    'Frodo finishes packing', datetime(3018, 9, 23, 10, 59)), (
    'Gandalf tames Shadowfax', datetime(3018, 9, 23, 13, 11)), (
    'Gandalf crosses the Isen', datetime(3018, 9, 24, 18, 46))]
for key, values in groupby(rows, key=lambda row: row[1].date()):
    print('-')
pprint(key)
pprint(list(values))
Django - Group By with Date part alone