2015-04-18 8 views
0

У меня есть QuerySet с двумя ManyToManyFields, назовем их game.players_a и game.players_b. Количество значений в одном поле почти никогда не совпадает с количеством в другом поле, но обычно 1-50. Я хочу, чтобы отобразить их значения в таблице шаблона, что-то вроде этого:Подача двух многопользовательских полей одного QuerySet в столбцы таблицы HTML

game.html

<% for a, b in (game.players_a + game.players_b) %> 
<tr> 
    <td>a.image</td> 
    <td>a.name</td> 
    <td>b.image</td> 
    <td>b.name</td> 
</tr> 
<% endfor %> 

Есть ли способ объединить значения из двух ManyToManyFields в game.players который будет немного похож на [(Объект игрока, Объект игрока), (Объект игрока, Объект игрока), (Нет, Объект игрока)] или есть более простой способ подачи этих значений в столбцы таблицы?

ответ

1

Вам используйте izip_longest() функция от itertools:

from itertools import izip_longest 

players = izip_longest(game.players_a.all(), game.players_b.all()) 
return render(request, 'template.html', {'game': game, 'players': players}) 
+0

Это работает! Спасибо. Поправки, которые я сделал, я использовал zip_longest, так как не упомянул, что я использую Python 3, и добавил, если блоки в шаблоне представляют пустые ячейки таблицы для значений NoneType. –

Смежные вопросы