Limit Django's inlineformset_factory to only create new objects

前端 未结 3 1154
伪装坚强ぢ
伪装坚强ぢ 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:03

    Based on Jeremy Lewis and if you don't want to subclass BaseInlineFormSet, you can just give an empty queryset parameter to your BookFormSet.

    See pseudo (untested) Django 1.6 code sample:

    BookFormSet = inlineformset_factory(parent=Author, model=Book)
    if request.method == "POST":
        formset = BookFormSet(request.POST, request.FILES, instance=author)
        if formset.is_valid():
            formset.save()
    else:
        queryset = Book.objects.none() # does not allow to edit books
        formset = BookFormSet(instance=project, initial=initial, queryset=queryset)
    return render(request, "add_book.html", { "formset": formset, })
    

提交回复
热议问题