Как установить значение по умолчанию в форме из другой формы в Django - PullRequest
0 голосов
/ 09 июня 2019

У меня есть две формы, одна CreateOrderForm и одна CreateManifestForm. Передача CreateOrderForm отображает CreateManifestForm.

В CreateOrderForm есть ссылка «reference», которая вводится пользователем, но затем должна по умолчанию вводиться в «поле ссылки 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 голосов
/ 09 июня 2019

Существует решение, которое вы можете попробовать: сделать URL-адрес add_manifest таким параметром, как

path('add-manifest/<int:reference_id>/', name='add_manifest`)

и в вашем обновлении View:

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...