2014-02-04 3 views
0

У меня есть модель в джанго, где у одного парня есть 1-6 раундов для каждого боя. Я пытаюсь получить все его бои, а потом сортирую их по кругу. Однако некоторые раунды пропускаются:Сопоставление списка с фильтрацией

results = self.objects.filter(boxer) 
fight_results = [] 
for r in results: 
    result = sorted([x for x in results if x.fight_id == r.fight_id],key=lambda r: -r.round) 
    fight_results.append(result) 

Что я делаю неправильно?

EDIT: Чтобы уточнить, для каждого боя есть 1 - 6 записей с одним и тем же fight_id, но разными круглыми номерами в базе данных. Я просто пытаюсь их получить, добавить в список и отсортировать по номеру раунда

+0

Вы можете инвертировать это и магазин '{fight_id: (х, г)}'? – Daenyth

+0

Я не уверен, что с вашим «ключом», я не думаю, что вы хотите использовать 'r' для этого. – 2rs2ts

+0

Я думаю, вам понадобится немного объяснить схему базы данных и ожидаемые результаты. – cmd

ответ

0

Не зная структуры класса/данных для ваших fights и rounds, сложно понять, что вы пытаетесь сделать. Из вашего описания мне кажется, что сортировка списка, которая сортируется, неверно использует results. Глядя на ключ передается ф sorted следует ссылающийся на бои в конкретный результат и, следовательно, должно быть что-то вроде:

result = sorted([x for x in r.fights if x.fight_id == r.fight_id],key=lambda r: -r.round) 
Смежные вопросы