如何从Django中的另一个表单中的表单中默认值

时间:2019-06-09 12:27:12

标签: python django forms

我有两种形式,一种是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中输入该字段,并在创建清单时将该值传递给默认值。非常感谢您的帮助,并在此先感谢您。

1 个答案:

答案 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')