2017-09-05 44 views
1

当我单击提交按钮时,我不断收到u'(...)中的键[form]的失败查找。我不能确定正在发生什么或为什么。我不知道如果是脆皮,形式或意见的问题。也许小费是我把formset中的extra = 1,但只显示1行。在香脆的formset中u'中的键[form]失败查找

form.py

class CotizacionForm(forms.ModelForm): 
    class Meta: 
     model = Cotizacion 
     fields = ('fecha', 'local','estado_pago','estado_trabajo','detalle_monto', 'observacion',) 
     widgets = {'fecha': forms.DateInput(attrs={'id': 'datetimepicker12'})} 



    def __init__(self, *args, **kwargs): 
     super(CotizacionForm, self).__init__(*args, **kwargs) 
     self.helper = FormHelper() 
     self.helper.form_id = 'id-cotizacion-form' 
     self.helper.form_method = 'post' 
     self.helper.form_class = 'form-horizontal' 
     self.helper.label_class = 'col-lg-3 text-left' 
     self.helper.field_class = 'col-lg-9' 
     self.helper.layout = Layout(
       Div(
        Field('fecha',style="margin-bottom: -10px;"), 
        Field('local',style="margin-bottom: -10px;"), 
        Field('estado_trabajo', style="margin-bottom: -10px;"), 
        Field('estado_pago', style="margin-bottom: -10px;"), 
        Field('detalle_monto', style="margin-bottom: -10px;"), 
        css_class="col-lg-6" 
        ), 
       Div(

        Field('observacion',style="max-height: 100px;"), 
        css_class="col-lg-6" 
        ), 
       ) 



class TrabajoForm(forms.ModelForm): 
    class Meta: 
     model = Trabajo 

     fields = ('unidad','valor','actividad','cuadrilla') 

    descripcion = forms.CharField(
      label = "Escriba el detalle del trabajo", 
      max_length = 200, 
      required = True, 
      ) 

    def __init__(self, *args, **kwargs): 
     super(TrabajoForm, self).__init__(*args, **kwargs) 
     self.helper = FormHelper() 
     self.helper.form_id = 'id-trabajo-form' 
     self.helper.form_method = 'post' 
     # self.helper.form_action = reverse('submit_form') 
     # self.helper.add_input(Submit('submit', '+', css_class='btn btn-rounded btn-sm btn-icon btn-default text-right')) 
     self.helper.form_class = 'form-inline col-lg-12' 
     self.helper.field_template = 'bootstrap3/layout/inline_field.html' 
     self.helper.layout = Layout(
       Div(
        InlineField('descripcion', 
         style="width:650px" 
         ), 
        'unidad', 
        'valor', 
        'actividad', 
        'cuadrilla', 
        HTML("<a class=" + "delete-row" + " href=" + "javascript:void(0)" + "><i class=" + "'fa fa-trash-o fa-lg icon text-danger-dker'" + "></i> </a>"), 
        style='margin-bottom:5px', 
        # css_class="col-lg-12" 
        ), 
       ButtonHolder(
       Submit('submit', 'Submit', css_class='button white') 
      ) 
        ) 

views.py

@login_required 
def cotizacion_new(request, cotizacion_id=None): 
    TrabajoInlineFormSet = inlineformset_factory(Cotizacion, Trabajo, form=TrabajoForm, extra=1, can_delete=True) 

    if cotizacion_id: 
     cotizacion = Cotizacion.objects.get(pk=cotizacion_id) 

    else: 
     cotizacion = Cotizacion() 

    if request.method == "POST": 
     form = CotizacionForm(request.POST, instance=cotizacion) 
     formset = TrabajoForm(request.POST, instance=cotizacion) 
     if form.is_valid() and formset.is_valid(): 
      form.save() 
      formset.save() 
      return redirect('erp:cotizacion_detail', pk=cotizacion.pk) 
    else: 
     form = CotizacionForm(instance=cotizacion) 
     formset = TrabajoInlineFormSet(instance=cotizacion) 

    return render(request, 'erp/cotizacion_edit.html', {'form': form, 'formset': formset}) 

cotizacion_edit.html

   <div class="col-lg-12"> 
        <div class="row"> 
         {% crispy form %} 
        </div> 
        <hr> 
        <p>Detalle de los Trabajos:</p> 
        <div class="row link-formset"> 
         {% crispy formset formset.form.helper %} 
        </div> 
       </div> 
       <form method='POST' action=''> 
       {% csrf_token %} 
       <div class="col-lg-12 "> 
        <br> 
        <input type="submit" class="btn btn-sm btn-block btn-primary"></input> 
        <br> 
       </div> 
       </form> 
      </div> 

urls.py

(...) 
url(r'^cotizacion/new/$', views.cotizacion_new, name='cotizacion_new'), 
    url(r'^cotizacion/edit/(?P<cotizacion_id>[0-9]+)/$', views.cotizacion_new, name='cotizacion_edit'), 
    url(r'^cotizacion/(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='cotizacion_detail'), 

环境:

请求方法:POST 请求URL:http://localhost:8000/erp/cotizacion/new/

Django的版本:1.11.4 Python版本:2.7.10

Installed Applications: 
['erp.apps.ErpConfig', 
'django.contrib.admin', 
'django.contrib.admindocs', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.humanize', 
'crispy_forms'] 
Installed Middleware: 
['django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware'] 

模板错误:

回溯:

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site- packages/django/core/handlers/exception.py“41.响应= get_response(请求)

文件”/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/ django的/核心/处理器/ base.py “在_legacy_get_response 249.响应= self._get_response(请求)

文件” /Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/ django的/核心/处理器/ base.py “在_get_response 187.响应= self.process_exception_by_middleware(E,请求)

文件” /Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/si TE-包/ django的/核心/处理器/ base.py “在_get_response 185.响应= wrapped_callback(请求,* callback_args,** callback_kwargs)

文件”/应用/ MAMP/htdocs中/ italuzbi/italuzvenv/lib中/python2.7/site-packages/django/contrib/auth/decorators.py “在_wrapped_view 23.返回view_func(请求,*指定参数时,** kwargs)

文件”/应用/ MAMP/htdocs中/ italuzbi /erp/views.py“在cotizacion_new 76. return render(请求,'erp/cotizacion_edit.html',{'form':form,'formset':formset})

文件”/ Applications/MAMP /的htdocs/italuzbi/italuzven内容= loader.render_to_string(template_name,context,request,using = using)

文件“/ Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/loader.py“in render_to_string 68. return template。渲染(上下文请求)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/backends/django.py”在渲染 66回自我.template.render(context)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/base.py”in render 207. return self。在_render 199的self.nodelist.render回报_render(上下文)

文件 “/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/base.py” (上下文)

文件 “/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/base.py” 在渲染 990位= node.render_annotated(上下文)

文件 “/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/base.py” 在render_annotated 957回self.render(上下文)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/loader_tags.py”in render 177. return compiled_pa​​rent._render(context)

在_render 199的self.nodelist.render回报(上下文)

文件 “/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/base.py”

文件 “/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/base.py” 在渲染 990位= node.render_annotated(上下文)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/base.py” 在render_annotated 957回self.render(上下文)

文件“/鸭褶皱/ MAMP/htdocs中/ italuzbi/italuzvenv/lib中/ python2.7 /站点包/ Django的/模板/ loader_tags.py “在渲染 72.结果= block.nodelist.render(上下文)

文件”/应用程序/ MAMP/htdocs中/ italuzbi/italuzvenv/lib中/ python2.7 /站点包/ Django的/模板/ base.py “在渲染 990位= node.render_annotated(上下文)

文件”/应用/ MAMP/htdocs中/ italuzbi/italuzvenv/lib中/ python2.7 /站点包/ Django的/模板/ base.py “在render_annotated 957回self.render(上下文)

文件”/应用程序/ MAMP/htdocs目录/ italuzbi/italuzvenv/lib中/python2.7/site-packages/crispy_forms/templatetags/crispy_forms_tags.py “在渲染 215 C = self.get_render(上下文)

文件”/应用/ MAMP/htdocs中/ italuzbi/italuzvenv/LIB/python2 0.7 /站点包/ crispy_forms/templatetags/crispy_forms_tags.py “在get_render 109帮手= helper.resolve(上下文)

文件” /Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7 /site-packages/django/template/base.py“中的解析 849. value = self._resolve_lookup(context)

文件”/ Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2。7 /站点包/ Django的/模板/ base.py”在_resolve_lookup 903(比特流))#缺少的属性

+0

请显示* full * traceback,它显示发生此错误的位置。 –

+0

只需添加回溯 –

回答

0

我认为这个问题是您致电{% crispy formset.form.helper %} - 该formset没有form属性见the crispy docs有关如何使用该标签与表单集