我正在尝试创建我的第一款django应用程序 - 体育预测游戏。
我希望用户使用3个按钮(图像)从三个可能的结果中进行选择,这些按钮将3个不同的值传递给db:
1 - 主队获胜
0 - 画出
2 - 客队胜利
我可以在输入内容时使用表单保存数据,但是如何将这些按钮的值传递给我的数据库?
我的game.html上的代码:
{% csrf_token %}
{{ form }}
<input type="submit" value = 1>
<input type="submit" value = 0>
<input type="submit" value = 2> </form>
和我的观点:
def game(request, Game_id):
thisgame = get_object_or_404(Game, pk=Game_id)
nextgame = int(thisgame.id)+1
template = loader.get_template('polls/game.html')
form = NewBetForm(request.POST or None)
current_user = request.user
allgames = Game.objects.all()
betchoices = BetChoice.objects.all()
context = { 'thisgame': thisgame,
'nextgame': nextgame,
'form': form,
'current_user': current_user,
'betchoices': betchoices,}
if form.is_valid():
bet = form.save(commit=False)
bet.gameid = Game.objects.get(id=Game_id)
bet.userid_id = current_user.id
bet.save()
else:
print (form.errors)
和我的表格:
class NewBetForm(forms.ModelForm):
class Meta:
model = GameBet
fields = ['bet']
我得到的错误是Bet - this field is required
感谢您的所有想法!
答案 0 :(得分:1)
你可以为它设置名称:
<input type="submit" name="send1" value ="1">
注意:您应该重视value ="1"
和views.py
:
if request.method == 'POST':
if request.POST["send1"] == "1":
//do some thing
elif request.POST["send1"] == "2":
//do domthing
else://request.POST["send1"] == "3"
//do something
我希望它会对你有所帮助:)。
答案 1 :(得分:0)
与任何其他类型的表单字段一样,提交按钮在将任何数据发送到后端之前需要name
属性。从那里,您可以通过request.POST['whatever_the_name_is']
获取其值并将其分配给新创建的对象 - 或者,如果您使用已经是表单中字段的名称,它将自动分配。