インラインformsetの終了インスタンスから新しいレコードを保存する必要があります。私は親モデル(Order
)から新しいインスタンスを保存することができましたが、フォームセットの新しいインスタンスを保存する方法を理解できません。コードは次のようになります。formsetインスタンスから新しいレコードを保存する
def order(request, date):
edit = Order.objects.get(date=date, user=None)
edit_formset = modelformset_factory(Order_items, fields='__all__', extra=0)
if request.method == 'POST':
form = OrderForm(request.POST, instance=edit)
formset = edit_formset(request.POST, queryset=Order_items.objects.filter(order__date=date))
if form.is_valid():
instance = form.save(commit=False)
instance.pk = None
instance.user_id = request.user.id
if formset.is_valid():
form.save()
formset.save()
return HttpResponseRedirect('order')
else:
form = OrderForm(instance=edit)
formset = edit_formset(queryset=Order_items.objects.filter(order__date=date))
return render(request, 'diner/order.html', {'edit': edit, 'form': form, 'formset': formset})
フォームセットのポイントは、それが複数のフォームが含まれていることですので、あなたは、「フォームセットの新しいインスタンス」について何を意味するかわかりません。しかし、あなたが提起したコードの何が間違っていますか?それはあなたが期待していないこと、またはあなたが期待していることをしていないことは何ですか?どのようなエラーが出ますか? –
既存のレコードを編集して新しいレコードを保存する必要があります。問題は、コードがOrderテーブルの新しいレコードを保存しますが、Order_itemsに新しいテーブルを作成しないことです。 – ZmuA
おそらく、 'formset_is_valid()'はFalseですが、その場合は依然としてリダイレクトします。 –