Verwenden von Django-Modellformularen + Formularassistent + Knusprig - Fährt nicht mit dem zweiten Schritt fort

Ich bin ziemlich neu in Formen in Django.

Mein Problem ist, dass ich einige sehr große Modelle habe, die ich in eine Reihe kleinerer Formulare aufteilen muss, damit die Benutzer sie ausfüllen können.

So habe ich mit knusprigen Formularen rumgespielt und gestern, nachdem ich mir Mike Hibberts Tutorial (Python Django Tutorial 19 - Verwenden des Formular-Assistenten) auf YouTube angesehen hatte, wollte ich sehen, ob ich das mit einem knusprigen Formular machen kann.

Alles scheint für mich in Ordnung zu sein. Wenn ich jedoch auf "Senden" drücke, scheint das Formular validiert zu sein, fährt jedoch nicht mit Schritt 2 fort.

ache ich das komplett falsch ??

ielen Dank für jede Hilfe oder Anregunge

forms.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])), 
)

models.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>

Ich wünsche ihnen einen wunderbaren Tag!!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage