Django - Creating form for editing multiple instance of model

前端 未结 1 1431
面向向阳花
面向向阳花 2020-12-22 09:59

Note: Django/Python beginner, hope this question is clear

I need to create a form where multiple instances of a model can be edited at once in a single form, and be

相关标签:
1条回答
  • 2020-12-22 10:58

    You need to use a FormSet, in particular a ModelFormSet:

    ...
    GuestFormSet = modelformset_factory(Guest, form=ExtraForm)
    

    in your view you can use it as a normal form:

    formset = GuestFormSet(data=request.POST)
    
    if formset.is_valid():
      formset.save()
    

    and in your template:

       <form method="post" action="">
         {{ formset.management_form }}
           <table>
             {% for form in formset %}
               {{ form }}
             {% endfor %}
           </table>
       </form>
    

    tip: you can avoid the avoid this boilerplate

    if request.method == 'POST':
        form = ExtraForm(request.POST)
    
        print(form.data)
    
        # Have we been provided with a valid form?
        if form.is_valid():
    

    with a simple shortcut:

    form = ExtraForm(data=request.POST or None)
    if form.is_valid():
      ...
    
    0 讨论(0)
提交回复
热议问题