2017-01-07 4 views
-1

Ich versuche ein Formular zu erstellen, wo ich mehrere Objekte zu einer Liste hinzufügen kann. Wenn ich versuche, das Formset zu verwenden, bekomme ich den Fehler, alles scheint zu funktionieren, wenn ich das Formset aus der Vorlage entferne.Formset sollte ein gültiges Django Formset enthalten

Parameter "formset" should contain a valid Django Formset. 

Ich habe mehrere Beispiele betrachtet, aber keine scheint zu funktionieren.

Vorlage:

<form action="{% url 'usermanager:organization_edit_details' organization.id %}" method="post" class="form"> 
     {% csrf_token %} 
     {% bootstrap_form form layout='inline' %} 
     {%bootstrap_formset formset %} 
     {% buttons %} 
     <button type="submit" class="btn btn-primary"> 
     {% bootstrap_icon "star" %}Submit 
    </button><button class="btn btn-primary">Cancel -dead</button> 
    {% endbuttons %} 
    </form> 

view.py

def organization_edit_details(request, organization_id): 
    organization = get_object_or_404(Organization, pk=organization_id) 
    form = OrganizationForm(request.POST or None, request.FILES or None, instance=organization) 
    formset = StaffFormSet(request.POST or None, instance = organization) 
    if form.is_valid(): 
     organization.organization_name = form.cleaned_data['organization_name'] 
     organization.description = form.cleaned_data['description'] 
     organization.rules = form.cleaned_data['rules'] 
     organization.open_times = form.cleaned_data['open_times'] 
     organization.website = form.cleaned_data['website'] 
     organization.email = form.cleaned_data['email'] 
     organization.street_name = form.cleaned_data['street_name'] 
     organization.street_number = form.cleaned_data['street_number'] 
     organization.postcode = form.cleaned_data['postcode'] 
     organization.country = form.cleaned_data['country'] 
     organization.kvk_number = form.cleaned_data['kvk_number'] 
     organization.save() 
     if formset.is_valid(): 

      return HttpResponseRedirect(reverse('usermanager:organization_edit_details')) 
    return render(request, 'user_manager/organizationEdit.html',{'organization':organization, 'form':form}) 

forms.py

from django.forms import ModelForm, Textarea, inlineformset_factory 
from organizations.models import Organization, StaffMemberList 

class OrganizationForm(ModelForm): 
    class Meta: 
     model = Organization 
     fields = ['organization_name', 'description', 'rules','open_times',\ 
     'website', 'email', 'street_name', 'street_number', 'postcode', 'country'] 
     widgets = { 
     'description': Textarea(attrs={'cols': 40, 'rows': 20}), 
     'rules': Textarea(attrs={'cols': 40, 'rows': 15}), 
     'open_times': Textarea(attrs={'cols': 40, 'rows': 7}) 
     } 

class StaffForm(ModelForm): 
    class Meta: 
     model = StaffMemberList 
     fields = ['username',] 

StaffFormSet = inlineformset_factory(Organization, StaffMemberList, fields=('username',)) 

Trackeback:

Environment: 


Request Method: GET 
Request URL: http://localhost:8000/user/organizationmanager/1/edit/ 

Django Version: 1.10.4 
Python Version: 3.5.2 
Installed Applications: 
['django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'organizations.apps.OrganizationsConfig', 
'news.apps.NewsConfig', 
'events.apps.EventsConfig', 
'user_manager.apps.UserManagerConfig', 
'bootstrap3', 
'django_forms_bootstrap', 
'registration', 
'debug_toolbar'] 
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.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'debug_toolbar.middleware.DebugToolbarMiddleware'] 


Template error: 
In template /home/dave/Projecten/Web/TotalMTB/user_manager/templates/user_manager/organizationEdit.html, error at line 19 
    Parameter "formset" should contain a valid Django Formset. 9 : {% block content %} 
    10 : <div class="row"> 
    11 : <div class="col-xs-6 organization-edit"> 
    12 :  <h3>You are editing the page of: <b>{{ organization.organization_name }}</b></h3> 
    13 : 
    14 :  {%if error_message %}<p><strong>{% bootstrap_form_errors form layout='inline' %}</strong></p>{% endif %} 
    15 : 
    16 :  <form action="{% url 'usermanager:organization_edit_details' organization.id %}" method="post" class="form"> 
    17 :  {% csrf_token %} 
    18 :  {% bootstrap_form form layout='inline' %} 
    19 :  {%bootstrap_formset formset %} 
    20 :  {% buttons %} 
    21 :  <button type="submit" class="btn btn-primary"> 
    22 :  {% bootstrap_icon "star" %}Submit 
    23 :  </button><button class="btn btn-primary">Cancel -dead</button> 
    24 :  {% endbuttons %} 
    25 :  </form> 
    26 : </div> 
    27 : </div> 
    28 : {% endblock %} 
    29 : 

Traceback: 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner 
    39.    response = get_response(request) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response 
    187.     response = self.process_exception_by_middleware(e, request) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response 
    185.     response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/contrib/auth/decorators.py" in _wrapped_view 
    23.     return view_func(request, *args, **kwargs) 

File "/home/dave/Projecten/Web/TotalMTB/user_manager/views.py" in organization_edit_details 
    43.  return render(request, 'user_manager/organizationEdit.html',{'organization':organization, 'form':form}) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/shortcuts.py" in render 
    30.  content = loader.render_to_string(template_name, context, request, using=using) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/loader.py" in render_to_string 
    68.  return template.render(context, request) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/backends/django.py" in render 
    66.    return self.template.render(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/base.py" in render 
    208.      return self._render(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/test/utils.py" in instrumented_test_render 
    94.  return self.nodelist.render(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/base.py" in render 
    994.     bit = node.render_annotated(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/base.py" in render_annotated 
    961.    return self.render(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/loader_tags.py" in render 
    174.   return compiled_parent._render(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/test/utils.py" in instrumented_test_render 
    94.  return self.nodelist.render(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/base.py" in render 
    994.     bit = node.render_annotated(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/base.py" in render_annotated 
    961.    return self.render(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/loader_tags.py" in render 
    70.     result = block.nodelist.render(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/base.py" in render 
    994.     bit = node.render_annotated(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/base.py" in render_annotated 
    961.    return self.render(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/loader_tags.py" in render 
    70.     result = block.nodelist.render(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/base.py" in render 
    994.     bit = node.render_annotated(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/base.py" in render_annotated 
    961.    return self.render(context) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/django/template/library.py" in render 
    203.   output = self.func(*resolved_args, **resolved_kwargs) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/bootstrap3/templatetags/bootstrap3.py" in bootstrap_formset 
    268.  return render_formset(*args, **kwargs) 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/bootstrap3/forms.py" in render_formset 
    30.  return renderer_cls(formset, **kwargs).render() 

File "/home/dave/Projecten/Web/Django/venv/lib/python3.5/site-packages/bootstrap3/renderers.py" in __init__ 
    83.     'Parameter "formset" should contain a valid Django Formset.') 

Exception Type: BootstrapError at /user/organizationmanager/1/edit/ 
Exception Value: Parameter "formset" should contain a valid Django Formset. 
+1

{% bootstrap_formset formset%} bis {% bootstrap_formset formset%} –

+0

ich denke 'formset = StaffFormSet (request.POST oder None, instance = Organisation)' Instanz zum Personalmodell. aber nicht Organisation .. –

Antwort

0

Sie haben nichts an die Vorlage übergeben, das formset genannt wird, so dass bootstrap_formset es nicht rendern kann.