I am very new to Python / Django and would appreciate any and all help I can get here!
I am trying to take in multiple form fields and haven't been able to find a great clean way to do so. My code is trying to take in a foreign Key radio selection (the team), and a number (the bet size), for each instance.
I ended up creating the code to iterate over the request.POST.items to determine which game each team belongs to, which is working fine, however I am having trouble taking in the input for the Bet size as the "value" field is already being assigned to each game.
I have debated using a model form instead of the methodology I have chosen, but cannot find a great way to take in the foreign key data.
How would you suggest altering the code to take in the bet size field? Is there an alternative way to process using Model Forms that you would suggest?
Please find my code below!
Thanks in advance
Views.py:
def pick_game(request):
# Check what kind of request this is? GET/POST?
if request.method == 'GET':
game_list = Game.objects.order_by('-picks')
# form = PickGameForm()
page_variables = {
"game_list": game_list, 'form':form
}
return render(request, 'social/pickGame.html', page_variables)
else:
for key, value in request.POST.items():
print(key, value)
if "choice" in key:
game_id = int(key.split("_")[1])
team_id = int(value)
game = Game.objects.get(pk=game_id)
team = Team.objects.get(pk=team_id)
PlayerPick.objects.create(
player_profile=request.user.playerprofile,
game=game,
team=team,
bet_size=bet_size
)
else:
bet_size = request.POST.get('Bet')
pickGame.html:
<h1>Games</h1>
<form method="post">
{% csrf_token %}
{% for game in game_list %}
<h2>Game {{ game.number }}</h2>
<p><input type="radio" name="{{ game.pk }}" value="{{ game.team1.pk }}"> {{ game.team1.name }}</p>
<p><input type="radio" name="{{ game.pk }}" value="{{ game.team2.pk }}"> {{ game.team2.name }}</p>
<p><input type="number" name="Bet"> How much Money? </p>
{% endfor %}
<hr>
<button type="submit">Submit</button>
</form>
PlayerPick model:
class PlayerPick(models.Model):
player_profile = models.ForeignKey('PlayerProfile')
team = models.ForeignKey('Team')
game = models.ForeignKey('Game')
bet_size = models.IntegerField(default=0, blank=True)
correct = models.BooleanField(default=False, blank=True)
pick_time = models.DateTimeField(auto_now_add=True)
Aucun commentaire:
Enregistrer un commentaire