【发布时间】:2017-01-14 09:59:13
【问题描述】:
我需要从现有的内联表单集实例中保存一条新记录。我设法从父模型 (Order) 中保存了一个新实例,但我不知道如何保存表单集的新实例。代码是这样的:
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中新建一条记录。
-
大概
formset_is_valid()是假的,但在这种情况下你仍然重定向。 -
好的,我已经设法更正了表单集的有效性。但是保存新记录的问题依然存在
标签: python django inline-formset