2017-12-06 1 views
1

첫 번째 장고 앱 - 스포츠 예측 게임을 만들려고합니다.
나는 사용자가 3 개 버튼 DB에 3 개 개의 다른 값을 전달 (이미지)를 사용하여 세 가지 가능한 결과에서 선택합니다 :
1 - 홈 팀은
0 승리 - 원정 팀
어떻게 django에서 databse에 버튼 값을 저장 하시겠습니까?

체결 -
은 2 그릴 무언가를 입력 할 때 양식을 사용하여 데이터를 저장할 수 있지만 이 단추의 값을 데이터베이스로 전달하는 방법은 무엇입니까? 내 game.html에

코드 :

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) 

및 내 양식

:

{% csrf_token %} 

{{ form }} 
<input type="submit" value = 1> 
<input type="submit" value = 0> 
<input type="submit" value = 2> </form> 

내보기

class NewBetForm(forms.ModelForm): 
    class Meta: 
     model = GameBet 
     fields = ['bet'] 

와 내가 얻을 오류가 Bet - this field is required

입니다

모든 아이디어 주셔서 감사합니다!

답변

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 

을 내가 당신을 도움이되기를 바랍니다 :)

+0

안녕하세요 @ Snip77, y 감사합니다. 우리의 대답. 3 개의 버튼이 필요해 각각 이름을 다르게 지정해야합니까? \t가 'send1' 자기 - '키 \t { 'csrfmiddlewaretoken': 코드 ', 'send3 ':'3 '}' – Patr01

+1

예 당신이해야 지금은 MultiValueDictKeyError (를 repr이 (키))가'지역 바르 때와'얻었다 그들에게 전화를하십시오 .beacuse 서버 side.call의 버튼을 감지하고 싶습니다. 1, 2, 3.in 서버 쪽. clicked.if라는 이름의 버튼이 필요합니다. 다른 문제가 있으면 말해도 될까요? 대답 : –

+0

나는 아직도 뭔가를 여기에서 놓치고 있다고 생각한다. 이 접근법에서 폼이 유효하면''부분이 필요한가요? 지금은 다음을 가지고 있지만 그것은 아무것도하지 않습니다 : '경우 request.method == 'POST를' \t \t 경우 request.POST [ "내기"] == 1 : \t \t \t form.is_valid 경우() : \t \t \t \t 내기 = form.save (거짓 = 커밋) \t \t \t \t bet.gameid = Game.objects.수 (ID = GAME_ID) 다른 \t \t \t \t bet.userid_id = current_user.id \t \t \t \t bet.save() \t \t \t : \t \t \t \t 인쇄 (form.errors)' – Patr01

0

양식 필드의 다른 유형과 마찬가지로 제출 버튼에는 name 속성이 있어야 백엔드로 데이터를 전송할 수 있습니다. 거기에서 request.POST['whatever_the_name_is']을 통해 값을 가져 와서 새로 생성 된 객체에 할당 할 수 있습니다. 또는 이미 양식의 필드 인 이름을 사용하면 자동으로 할당됩니다. 이 같은 대한

관련 문제