我有两种形式,一种是CreateOrderForm,一种是CreateManifestForm。提交CreateOrderForm会呈现CreateManifestForm。
CreateOrderForm“引用”中有一个输入,用户可以输入,但默认情况下应将其输入CreateManifestForm的“引用”字段中。我似乎无法弄清楚如何将该值从一个表单传递到另一个表单
FORMS.PY
class CreateOrderForm(forms.ModelForm):
class Meta:
model = Orders
fields = ('reference', 'ultimate_consignee', 'ship_to', 'vessel', 'booking_no', 'POL',....)
class CreateManifestForm(forms.ModelForm):
class Meta:
model = Manifests
fields = ('reference', 'cases', 'description', 'count')
VIEWS.PY
def add_order(request):
if request.method == "POST":
form = CreateOrderForm(request.POST)
if form.is_valid():
form.save()
return redirect('add_manifest')
else:
form = CreateOrderForm()
return render(request, 'add_order.html', {'form': form})
def add_manifest(request):
if request.method == "POST":
form = CreateManifestForm(request.POST)
if form.is_valid():
form.save()
return redirect('add_manifest')
form = CreateManifestForm()
manifests = Manifests.objects.all()
context = {
'form': form,
'manifests': manifests,
}
return render(request, 'add_manifest.html', context)
如您所见,每个表单中都有一个用于“引用”的字段,我希望用户在CreateOrderForm中输入该字段,并在创建清单时将该值传递给默认值。非常感谢您的帮助,并在此先感谢您。
答案 0 :(得分:0)
您可以尝试以下解决方案:
使add_manifest
URL的参数为
path('add-manifest/<int:reference_id>/', name='add_manifest`)
并在您的视图更新中:
return redirect('add_manifest') # in add_order function
收件人:
return redirect('add_manifest', kwargs={'reference_id': form.reference})
现在在add_manifest
视图中,您可以从以下位置访问参考:
request.resolver_match.kwargs.get('reference_id')