Limit Django's inlineformset_factory to only create new objects

前端 未结 3 1120
伪装坚强ぢ
伪装坚强ぢ 2021-02-04 13:41

I am using django\'s inline formset factory. To use the example in the docs,

author = Author.objects.get(pk=1)
BookFormSet = inlineformset_factory(Author, Book)         


        
3条回答
  •  独厮守ぢ
    2021-02-04 14:14

    Actually the answer is given in the documentation. Just don't give any instance to the FormSet. From the doc:

    >>> from django.forms.models import inlineformset_factory
    >>> BookFormSet = inlineformset_factory(Author, Book)
    >>> author = Author.objects.get(name=u'Mike Royko')
    >>> formset = BookFormSet() # This will create an empty form with your model fields
    

    You can then create view as follows:

    if request.method == "POST":
        formset = BookFormSet(request.POST, request.FILES)
        if formset.is_valid():
            formset.save()
    else:
        formset = BookFormSet()
    return render_to_response("add_book.html", {
        "formset": formset,
    

    Hope it helps.

提交回复
热议问题