Django - Creating form for editing multiple instance of model

前端 未结 1 1436
面向向阳花
面向向阳花 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:

       
    {{ formset.management_form }} {% for form in formset %} {{ form }} {% endfor %}

    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)
提交回复
热议问题