Je dois enregistrer un nouvel enregistrement à partir de l'instance existante de formset en ligne. J'ai réussi à enregistrer une nouvelle instance à partir du modèle parent (Order
), mais je ne peux pas comprendre comment enregistrer une nouvelle instance d'un formset. Le code est comme ceci:Enregistrement d'un nouvel enregistrement à partir de l'instance de 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})
Je ne sais pas ce que vous entendez par « une nouvelle instance d'un formset », le point d'un formset est qu'il contient de multiples formes. Mais quel est le problème avec le code que vous avez posé? Que fait-il que vous n'attendez pas, ou ne faites pas ce que vous attendez? Quelles erreurs obtenez-vous? –
Je dois éditer l'enregistrement existant et en enregistrer un nouveau. Le problème est que le code enregistre un nouvel enregistrement de la table Order, mais n'en crée pas un nouveau dans Order_items. – ZmuA
Vraisemblablement 'formset_is_valid()' est False, mais vous redirigez toujours dans ce cas. –