2009-12-08 3 views
0

Je déteste demander ici, mais je suis perplexe et les gars de irc.Quel est le problème avec cette boucle dans ma vue/modèle Django?

Le modèle n'affiche pas le contenu de la liste que j'essaie d'afficher. {{Bet}} seul n'affiche pas non plus de valeurs. Qu'est-ce que je rate?

Modèle:

{% for bet in bets %} 
<tr> 
    <td><div>{{ bet.game_num }}</div></td> 
    <td><div>{{ bet.home_team }}</div></td> 
    <td><div>{{ bet.home_odds }}</div></td> 
    <td><div id="home-odds-checkbox"><input type="checkbox"></div></td> 
    <td><div>{{ bet.visiting_team }}</div></td> 
    <td><div>{{ bet.visiting_odds }}</div></td> 
    <td><div id="visiting-odds-checkbox"><input type="checkbox"></div></td> 
    <td><div>{{ bet.tie_odds }}</div></td> 
    <td><div id="tie-odds-checkbox"><input type="checkbox"></div></td> 
</tr> 
{% endfor %} 

Vue:

def choose_bets(request): 
    # Should be a post to get to this page 
    num_games = int(request.POST['games']) + 1 

    # Fill BetData with teams and odds 
    bets = [] 
    for x in range(1, num_games): 
     try: 
      league_id = int(request.POST[str(x) + '-league']) 
      game_num = int(request.POST[str(x) + '-game_num']) 
      home_team = request.POST[str(x) + '-home_team'] 
      visiting_team = request.POST[str(x) + '-visiting_team'] 
      home_odds = float(request.POST[str(x) + '-home_odds']) 
      visiting_odds = float(request.POST[str(x) + '-visiting_odds']) 
      tie_odds = float(request.POST[str(x) + '-tie_odds']) 
      skip_game = False 

     except ValueError: 
      league_id,game_num,home_odds,visiting_odds,tie_odds = 0,0,0,0,0 # bad fix 
      home_team,visiting_team = '','' 
      skip_game = True # Do not include entry in calculation 

     finally: 
      bets.append([game_num, league_id, home_team, visiting_team, home_odds, visiting_odds, tie_odds, skip_game]) 

    return render_to_response('choose_bets.html', locals(), context_instance=RequestContext(request)) 

contexte de la variable de pari:

'paris': [[1, 5, U '', U '', 1.0 , 1.0, 3.0], [2, 4, u '', u '', 2.0, 2.0, 43555.0], [3, 3, u '', u '', 3.0, 3.0, 5.0]]

Répondre

4

pas vous essayez passer chaque variable à travers explicitement un par un et voir à quel point il arrête le modèle fait référence à des champs nommés dans bet, mais vous avez passé dans un tableau.

Modifiez votre append dans choose_bets comme ceci:

bets.append(dict(game_num=game_num, league_id=league_id, home_team=home_team, visiting_team=visiting_team, home_odds=home_odds, visiting_odds=visiting_odds, tie_odds=tie_odds, skip_game=skip_game)) 

Vous avez maintenant un dict avec les touches que vous pouvez faire référence en l'état de votre modèle. .

ou ... changer le modèle à utiliser le tableau que vous passez dans Par exemple au lieu de:

<td><div>{{ bet.game_num }}</div></td> 

Utilisation:

<td><div>{{ bet.0 }}</div></td> 
+0

Max, je vous dois une. Merci d'avoir repéré ça pour moi. –

+0

Woo! Ma première réponse SO :) – Max

+0

Belle réponse Max-code apparaîtra mieux si vous indentez 4 espaces (lors de l'ajout ou de l'édition sélectionnez votre code et appuyez sur Ctrl-K, ou sélectionnez-le et cliquez sur le 0101, ou indentez-le 4 espaces manuellement). Le code en ligne peut ressembler à du code en utilisant des guillemets ('). J'ai modifié ce post pour vous. Bienvenue sur stackoverflow! –

1

Commencez avec l'étiquette {% debug %}. Voyez si le contexte contient ce que vous pensez qu'il devrait être.

0

Pourquoi travailler, plutôt que d'utiliser les habitants