Форум сайта python.su
помогите разобраться
есть view.py, который делит участников на две группы и составляет пары из этих групп:
def swiss(request): args = {} args.update(csrf(request)) args['index'] = Bill.objects.all() args['username'] = auth.get_user(request).username nov_por = Bill.objects.filter().order_by('-bill_mat_ozh') a = nov_por.count() // 2 nov_por_1 = (nov_por[:a]) nov_por_2 = (nov_por[a:]) res_1 = [(nov_por_1[n].bill_fio) for n in range(nov_por_1.count()) if nov_por_1[n] in nov_por_1] res_2 = [(nov_por_2[n].bill_fio) for n in range(nov_por_2.count()) if nov_por_2[n] in nov_por_2] players = zip_longest(res_1, res_2) args['players'] = players for rw_player in players: spisok = [] for one_rw_player in rw_player: if one_rw_player == None: pass else: rw_player_name = re.sub(r'[^\w\s-]+', r'', one_rw_player).strip() rw_player_id = Bill.objects.get(bill_fio = rw_player_name).id spisok.append(rw_player_id) spisok.sort() print(spisok) length = len(spisok) if length == 2: rival_1 = Bill.objects.get(id = spisok[0]) rival_2 = Bill.objects.get(id = spisok[1]) rival_1.swiss_rivel = spisok[1] rival_2.swiss_rivel = spisok[0] rival_1.save() rival_2.save() else: pass return render_to_response('swiss.html', args)
for rw_player in players:
return render_to_response('swiss.html', args)
<form action="{% url 'first_step' %}" method="post"> {% csrf_token %} <table border="1"> {% for opponents_player in players %} {% if None not in opponents_player %} <tr> <td> {% for single_player_if_yes in opponents_player %} {{ single_player_if_yes }} <br> {% endfor %} </td> <td> {% for single_player in opponents_player %} <input type="radio" name="{{ opponents_player }}" value="{{ single_player }}">{{ single_player }} <br> {% endfor %} <input type="radio" name="{{ opponents_player }}" value="no">Ничья<br> </td> </tr> {% else %}
Офлайн
методом проб, стала понятна точная причина, не понятна из-за чего
проблема в этом куске:
for rw_player in players: spisok = [] for one_rw_player in rw_player: if one_rw_player == None: pass else: rw_player_name = re.sub(r'[^\w\s-]+', r'', one_rw_player).strip() rw_player_id = Bill.objects.get(bill_fio = rw_player_name).id spisok.append(rw_player_id) spisok.sort() print(spisok) length = len(spisok) if length == 2: rival_1 = Bill.objects.get(id = spisok[0]) rival_2 = Bill.objects.get(id = spisok[1]) rival_1.swiss_rivel = spisok[1] rival_2.swiss_rivel = spisok[0] rival_1.save() rival_2.save() else: pass
args['players'] = players
Офлайн
решил проблему следующим образом:
*** players = zip_longest(res_1, res_2) n_players = zip_longest(res_1, res_2) for rw_player in n_players: ***
return render_to_response('swiss.html', {'players':players, 'index':index}, context_instance=RequestContext(request))
Отредактировано 7slon7 (Июль 7, 2016 15:53:17)
Офлайн