python - Using Django model forms + form wizard + Crispy - Does not proceed to second step -
python - Using Django model forms + form wizard + Crispy - Does not proceed to second step -
i new forms in django.
my issue have few big models have break series of smaller forms users fill out.
so i've been playing around crispy forms , yesterday after watching mike hibberts tutorial ( python django tutorial 19 - using form wizard ) on youtube wanted see if create work crispy form.
everything seems render ok me, when press submit form seems validated not proceed step 2.
am doing wrong??
thanks help or suggestions!
forms.py
from django import forms crispy_forms.helper import formhelper crispy_forms.layout import submit, layout, buttonholder crispy_forms.bootstrap import strictbutton models import processsheet class enterdata(forms.modelform): def __init__(self, *args, **kwargs): super(enterdata, self).__init__(*args, **kwargs) # if pass formhelper constructor form instance # builds default layout 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'), ) # can dynamically adjust 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 pass formhelper constructor form instance # builds default layout 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 pass formhelper constructor form instance # builds default layout 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 process_forms.models import processsheet django.contrib.formtools.wizard.views import sessionwizardview import logging logr = logging.getlogger(__name__) forms import enterdata # create views here. def sheetselect(request): logr.debug( "im in select!!!!!!!!!!!!" ) print "im in select!!!!!!!!!!!!" form = enterdata(request.post or none) log_data_message = "please come in data" if form.is_valid(): info = 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 exists!" sheets = processsheet.objects.all() homecoming render_to_response('ps14.html', locals(), context_instance=requestcontext(request)) def sheetfocus(request, sheet_id=0): sheet = processsheet.objects.get(id=sheet_id) homecoming 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) homecoming render_to_response('done.html', {'form_data': form_data}) def process_form_data(form_list): form_data = [form.cleaned_data form in form_list] logr.debug( "done process form data!!!!!!!!!!!!" ) homecoming form_data urls.py
from django.conf.urls import patterns, include, url process_forms.forms import sheet1, sheet2 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 django.core.validators import maxvaluevalidator, minvaluevalidator # create 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> 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 %} {% sheet in sheets %} <a href="/sheets/get/{{ sheet.id }}">{{sheet.sheet_title}}</a> <br> {% endfor %} {% endblock %} <br> have great day!!!
i think have solved little bit of issue, or maybe got lucky.
in forms.py meta() fields = '__ __'
needs changed reflect fields of interest, used variable sheet1_layout , sheet2_layout. after wizard seems proceed next step.
forms.py
from django import forms crispy_forms.helper import formhelper crispy_forms.layout import submit, layout, buttonholder crispy_forms.bootstrap import strictbutton models import processsheet sheet1_layout = ( 'sheet_id', 'sheet_title', 'part_name', ) class sheet1(forms.modelform): def __init__(self, *args, **kwargs): print "sheet 1 init!!!!!!!!!!!!!!!" super(sheet1, self).__init__(*args, **kwargs) # if pass formhelper constructor form instance # builds default layout 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(sheet1_layout, buttonholder('save', css_class='btn-warning'), ) self.helper.layout.append(submit('save', 'save')) class meta: model = processsheet fields = sheet1_layout sheet2_layout = ( 'cooling', 'nozzle', 'zone_5', ) class sheet2(forms.modelform): def __init__(self, *args, **kwargs): super(sheet2, self).__init__(*args, **kwargs) # if pass formhelper constructor form instance # builds default layout 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(sheet2_layout, buttonholder('finish', css_class='btn-warning'), ) self.helper.layout.append(submit('save', 'finish')) class meta: model = processsheet fields = sheet2_layout class testsheet1(forms.form): sheet_id = forms.charfield(max_length=16) class testsheet2(forms.form): hello = forms.charfield(max_length=16) python django forms wizard django-crispy-forms
Comments
Post a Comment