Uso de formularios modelo Django + asistente de formularios + Crujiente - No continúa con el segundo paso

Soy bastante nuevo en los formularios en django.

Mi problema es que tengo algunos modelos muy grandes que tengo que dividir en una serie de formularios más pequeños para que los usuarios completen.

Así que he estado jugando con formas crujientes y ayer, después de ver el tutorial de Mike Hibberts (tutorial 19 de Python Django - Uso del asistente de formularios) en YouTube, quería ver si podía hacer que esto funcionara con una forma crujiente.

Todo parece estar bien para mí, sin embargo, cuando presiono enviar, el formulario parece estar validado pero no continúa con el paso 2.

¿Estoy haciendo esto completamente mal?

¡Gracias por cualquier ayuda o sugerencia!

formas.py

from django import forms
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit, Layout, ButtonHolder
from crispy_forms.bootstrap import StrictButton

from models import ProcessSheet

class EnterData(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(EnterData, self).__init__(*args, **kwargs)
        # If you pass FormHelper constructor a form instance
        # It builds a default layout with all its fields
        self.helper = FormHelper(self)
        self.helper.form_class = 'form-horizontal'
        self.helper.label_class = 'text-center col-lg-4'
        self.helper.field_class = 'col-lg-8'

        self.helper.layout.append(Submit('save', 'save'))
        """
        self.helper.layout = Layout(
            'sheet_id',
            'sheet_title',
            'part_name',
            ButtonHolder('save', css_class='btn-warning'),
        )
        # You can dynamically adjust your layout
        """

    class Meta:
        model = ProcessSheet
        fields = "__all__" 

class Sheet1(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        print "sheet 1 init!!!!!!!!!!!!!!!"
        super(Sheet1, self).__init__(*args, **kwargs)
        # If you pass FormHelper constructor a form instance
        # It builds a default layout with all its fields
        self.helper = FormHelper(self)
        self.helper.form_tag = False
        self.helper.form_class = 'form-horizontal'
        self.helper.label_class = 'text-center col-lg-4'
        self.helper.field_class = 'col-lg-8'

        self.helper.layout = Layout(
            'sheet_id',
            'sheet_title',
            'part_name',
        )

    class Meta:
        model = ProcessSheet
        fields = "__all__" 

class Sheet2(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(Sheet2, self).__init__(*args, **kwargs)
        # If you pass FormHelper constructor a form instance
        # It builds a default layout with all its fields
        self.helper = FormHelper(self)
        self.helper.form_tag = False
        self.helper.form_class = 'form-horizontal'
        self.helper.label_class = 'text-center col-lg-4'
        self.helper.field_class = 'col-lg-8'

        self.helper.layout = Layout(
            'cooling',
            'nozzle',
            'zone_5',
        )  
    class Meta:
        model = ProcessSheet
        fields = "__all__" 

views.py

from django.shortcuts import render_to_response, RequestContext
from process_forms.models import ProcessSheet
from django.contrib.formtools.wizard.views import SessionWizardView 

import logging
logr = logging.getLogger(__name__)

from forms import EnterData

# Create your views here.
def SheetSelect(request):
    logr.debug( "IM IN SELECT!!!!!!!!!!!!" )
    print "IM IN SELECT!!!!!!!!!!!!"
    form = EnterData(request.POST or None)
    log_data_message = "Please Enter Some Data"

    if form.is_valid():

        data = form.cleaned_data

        if not ProcessSheet.objects.filter(sheet_id=data['sheet_id']):

            save_it = form.save(commit=False)
            save_it.save()
            form = EnterData()
            log_data_message = "Data Entered Ok!"
        else:
            log_data_message = "Sheet ID already exists!"

    sheets = ProcessSheet.objects.all()    
    return render_to_response('PS14.html',
                              locals(),
                              context_instance=RequestContext(request))

def SheetFocus(request, sheet_id=0):
    sheet = ProcessSheet.objects.get(id=sheet_id)    
    return render_to_response('PS24.html',
                              locals(),
                              context_instance=RequestContext(request))

class SheetWizard(SessionWizardView ):
    logr.debug( "IM IN WIZARD!!!!!!!!!!!!" )
    template_name = "sheet_form.html"

    def done(self, form_list, **kwargs):
        logr.debug(  "IM IN DONE!!!!!!!!!!!!" )
        form_data = process_form_data(form_list)

        return render_to_response('done.html', {'form_data': form_data})

def process_form_data(form_list):
    form_data = [form.cleaned_data for form in form_list]
    logr.debug(  "DONE PROCESS FORM DATA!!!!!!!!!!!!" )
    return form_data

urls.py

from django.conf.urls import patterns, include, url

from process_forms.forms import Sheet1, Sheet2
from process_forms.views import SheetWizard

urlpatterns = patterns('',
    url(r'^all/', 'process_forms.views.SheetSelect'),
    url(r'^get/(?P<sheet_id>\d+)/', 'process_forms.views.SheetFocus'),
    url(r'^entry/', SheetWizard.as_view([Sheet1,Sheet2])), 
)

modelos.py

from django.db import models
from django.core.validators import MaxValueValidator, MinValueValidator

# Create your models here.
class ProcessSheet(models.Model):

    ejector_confirmation_on = models.BooleanField(default=True)

    number_of_cavities      = models.IntegerField(blank=True, null=True,validators=[
                                MaxValueValidator(100),
                                MinValueValidator(1)
                            ])
    date                    = models.IntegerField(blank=True, null=True)
    shift                   = models.IntegerField(blank=True, null=True,validators=[
                                MaxValueValidator(4),
                                MinValueValidator(1)
                            ])

    sheet_desc              = models.TextField(blank=True, null=True)
    comment                 = models.TextField(blank=True, null=True)

    sheet_id                = models.CharField(max_length=16, blank=False,null=True)
    sheet_title             = models.CharField(max_length=24, blank=False,null=True)
    part_number             = models.CharField(max_length=16, blank=False,null=True)
    part_name               = models.CharField(max_length=16, blank=True, null=True)
    machine_no              = models.CharField(max_length=16, blank=True, null=True)
    special_notes           = models.CharField(max_length=256,blank=True, null=True)
    end_of_arm_tool_number  = models.CharField(max_length=16, blank=True, null=True)
    program_picker_robot    = models.CharField(max_length=16, blank=True, null=True)
    nozzle_tip_size         = models.CharField(max_length=16, blank=True, null=True)
    k_cut                   = models.BooleanField(default=False)
    hydraulic_unit_pressure = models.CharField(max_length=16, blank=True, null=True)
    valve_gate              = models.CharField(max_length=16, blank=True, null=True)
    colorant                = models.CharField(max_length=16, blank=True, null=True)
    reasons_for_changes     = models.CharField(max_length=16, blank=True, null=True)
    finger_print            = models.CharField(max_length=16, blank=True, null=True)
    initial                 = models.CharField(max_length=16, blank=True, null=True)    

    V1                      = models.FloatField(blank=True, null=True)
    V2                      = models.FloatField(blank=True, null=True)
    V3                      = models.FloatField(blank=True, null=True)
    V4                      = models.FloatField(blank=True, null=True)
    V5                      = models.FloatField(blank=True, null=True)
    position_pressure       = models.FloatField(blank=True, null=True) 
    pack_1                  = models.FloatField(blank=True, null=True)
    pack_2                  = models.FloatField(blank=True, null=True)
    pack1                   = models.FloatField(blank=True, null=True)
    pack2                   = models.FloatField(blank=True, null=True)
    shot_size               = models.FloatField(blank=True, null=True)
    back_1                  = models.FloatField(blank=True, null=True)
    screw_speed             = models.FloatField(blank=True, null=True)
    cushion_in_inches       = models.FloatField(blank=True, null=True)
    injection_time          = models.FloatField(blank=True, null=True)
    cycle_time              = models.FloatField(blank=True, null=True)
    cooling                 = models.FloatField(blank=True, null=True)
    hot_sprue_1             = models.FloatField(blank=True, null=True)
    nozzle                  = models.FloatField(blank=True, null=True)
    zone_1_barrel           = models.FloatField(blank=True, null=True)
    zone_2_barrel           = models.FloatField(blank=True, null=True)
    zone_3_barrel           = models.FloatField(blank=True, null=True)
    mold                    = models.FloatField(blank=True, null=True)
    dryer                   = models.FloatField(blank=True, null=True)
    zone_1                  = models.FloatField(blank=True, null=True)
    zone_2                  = models.FloatField(blank=True, null=True)
    zone_3                  = models.FloatField(blank=True, null=True)
    zone_4                  = models.FloatField(blank=True, null=True)
    zone_5                  = models.FloatField(blank=True, null=True)
    zone_6                  = models.FloatField(blank=True, null=True)
    zone_7                  = models.FloatField(blank=True, null=True)
    zone_8                  = models.FloatField(blank=True, null=True)
    zone_9                  = models.FloatField(blank=True, null=True)
    zone_10                 = models.FloatField(blank=True, null=True)
    zone_11                 = models.FloatField(blank=True, null=True)
    zone_12                 = models.FloatField(blank=True, null=True)
    flowmeter_reading       = models.FloatField(blank=True, null=True)

    def Meta():
        managed = True

sheet_form.html

{% extends "base.html" %}

{% block content %}
<H1> This is the entry form </H1>
<p>Step {{ wizard.steps.step1 }} of {{ wizard.steps.count }}</p>
<br>

{{log_data_message}}        

<form action="/sheets/entry/" method="post">

{{ wizard.management_form }}

{% load crispy_forms_tags %}

{% crispy wizard.form %}




{% if wizard.steps.prev %}

<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.first }}">"first step"</button>
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">"prev step"</button>
{% endif %}

<input type="submit" value="Submit" />

</form>

{% endblock %}

{% block links %}

{% for sheet in sheets %}
    <a HREF="/sheets/get/{{ sheet.id }}">{{sheet.sheet_title}}</a>
    <br>
{% endfor %}

{% endblock %}

<br>

¡¡¡Que tengas un gran día!!!

Respuestas a la pregunta(2)

Su respuesta a la pregunta