Я пытаюсь создать строку, которая выводит итоги для каждого типа элемента в наборе запросов для следующей модели.
class Booking(models.Model):
_JACKET_SIZES = (
('s', 'Small'),
('m', 'Medium'),
('l', 'Large'),
('xl', 'X Large'),
('xxl', '2X Large'),
('unknown', 'Unsure'),
)
...
jacket_size = models.CharField(max_length=7, choices=_JACKET_SIZES, default='small', null=True)
...
По сути, я пытаюсь сопоставить список размеров пиджака в строку. Это то, что я уже пытался, но я уверен, что есть более простой способ.
bookings = Booking.objects.all()
jackets = {}
for booking in bookings:
jackets.setdefault(booking.get_jacket_size_display(), jackets.get(booking_get_jacket_size_display(), 0) + 1)
o = ', '.join('{}: {}'.format(k,v) for k,v in jackets.items()])
Предположим, что набор запросов содержит 4 объекта. 1 маленький жакет, 2 средних жакета и 1 большой жакет.
Результат приведенного выше кода, по-видимому, дает только 1 Medium, а не 2, как если бы он игнорировал вторую среднюю оболочку.