如何在django中将按钮值保存到数据库?

时间:2017-12-06 16:54:48

标签: django django-forms

我正在尝试创建我的第一款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

感谢您的所有想法!

2 个答案:

答案 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']获取其值并将其分配给新创建的对象 - 或者,如果您使用已经是表单中字段的名称,它将自动分配。