Home:ALL Converter>Django - Save forms in the same data table

Django - Save forms in the same data table

Ask Time:2015-07-29T03:05:14         Author:ZCox

Json Formatter

I'm having problem in saving selected choices in the same row of data table for each participant).

I have 2 forms. The first form is for some data and a multiple-choice question. The second form is another multiple-choice question. It also means I have 2 pages, after submit answers for page 1, it will redirect to page 2 for question 2.

When I try to be a participant and choose answers, the selected choices are saved in different data table. Pictures and code are displayed below.

enter image description here

forms.py

from django import forms
from .models import Survey

class SurveyForm(forms.ModelForm):
    BAT='Batman'
    SUPER='Superman'
    IRON='Ironman'
    WHATMOVIE1 = [
    (BAT, 'Batman'),
    (SUPER, 'Superman'),
    (IRON, 'Ironman'),
    ]
    movie_1 = forms.ChoiceField(choices=WHATMOVIE1, widget=forms.RadioSelect())
    class Meta:
        model = Survey
        fields = ["location", "age", 
        "marital_status", "education", 'movie_1']

class SurForm(forms.ModelForm):
    APP='Apple'
    BAN='Banana'
    LEM='Lemon'
    WHATMOVIE2 = [
    (APP, 'Apple'),
    (BAN, 'Banana'),
    (LEM, 'Lemon'),
    ]
    movie_2 = forms.ChoiceField(choices=WHATMOVIE2, widget=forms.RadioSelect())
    class Meta:
        model = Survey
        fields = [ 'movie_2']

views.py

from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from .forms import SurveyForm, SurForm

def homepage(request):
    if request.method == 'POST':
        title = "Questionnaire"
        form = SurveyForm(request.POST or None)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.save()
            return HttpResponseRedirect(reverse('nextpage'))
    else:
        form = SurveyForm()
    return render(request, "homepage.html", {"form": form})

def nextpage(request):
    title = "Next page"
    form = SurForm(request.POST or None)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.save()
    context = {
        "form": form,
    }
    return render(request, "nextpage.html", context)

admin.py

from django.contrib import admin
from .forms import SurveyForm, SurForm
from .models import Survey, Sur

    class SurAdmin(admin.ModelAdmin):
        form = SurForm

    class SurveyAdmin(admin.ModelAdmin):
        list_display = ["location", "age", 
        "marital_status", "education", 
        "movie_1"]
        form = SurveyForm


    admin.site.register(Survey, SurveyAdmin)
    admin.site.register(Sur, SurAdmin)

What should I do to save all selected answers in the same row for each participant?

Author:ZCox,eproduced under the CC 4.0 BY-SA copyright license with a link to the original source and this disclaimer.
Link to original article:https://stackoverflow.com/questions/31685053/django-save-forms-in-the-same-data-table
yy