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

У меня есть представление для ввода "заказа", который после отправки предоставляет представление для создания "манифеста", который может иметь несколько записей.Для каждого заказа пользователь вводит «ссылочный идентификатор», а в соответствующем манифесте ссылочный идентификатор должен совпадать с заказом (ссылочный идентификатор в модели манифестов является внешним ключом для модели заказов).

Iнужен способ, чтобы ссылочный идентификатор ордера отправлялся в модель манифестов для каждой строки, введенной в манифест, без необходимости вводить его каждый раз.

Я пытался либо передать ссылочный идентификатор черезurl (я в Django 1.10), но не могу понять, как использовать это.Я также думал о том, чтобы использовать .get, чтобы получить ссылочный идентификатор из заказа и сделать его доступным только для чтения в представлении Manifest, но я не смог понять это.

MODELS.PY

class Orders(models.Model):

    reference = models.CharField(max_length=50, unique=True)
    ultimate_consignee = models.ForeignKey(Customers, blank=True)
    ship_to = models.CharField(max_length=500, blank=True)
    vessel = models.CharField(max_length=100, blank=True)

    def __str__(self):
        return self.reference

class Manifests(models.Model):

    reference = models.ForeignKey(Orders)
    cases = models.IntegerField()
    description = models.CharField(max_length=1000)
    count = models.IntegerField()

    def __str__(self):
        return self.reference

VIEWS.PY

def add_order(request):
    if request.method == "POST":
        form = CreateOrderForm(request.POST)
        objectlist = Customers.objects.all()


        if form.is_valid():
            reference_id = form.cleaned_data.get('reference')
            form.save()
            return redirect('add_manifest')#, kwargs={'reference_id': form.cleaned_data['reference']})
    else:
        form = CreateOrderForm()
        objectlist = Customers.objects.all()
        context = {
            'form': form,
            'objectlist': objectlist,
            }

        return render(request, 'add_order.html', context)

def add_manifest(request):

    if request.method == "POST":
        form = CreateManifestForm(request.POST)
        reference = request.POST.get('reference')

        if form.is_valid():
            form.save()
            return redirect('add_manifest')

    form = CreateManifestForm()

    #below is used to filter the table in add_manifest.html
    reference = request.POST.get('reference')
    manifests = Manifests.objects.all().filter(reference=reference) 
    context = {
        'form': form,
        'manifests': manifests,
    }

    return render(request, 'add_manifest.html', context)

FORMS.PY

class CreateOrderForm(forms.ModelForm):
    class Meta:
        model = Orders
        fields = ('reference', 'ultimate_consignee', 'ship_to', 'vessel')

class CreateManifestForm(forms.ModelForm):
    class Meta:
        model = Manifests
        fields = ('reference', 'cases', 'description', 'count')

Идентификационный номер, введенный пользователем при создании заказа, должен быть сохранен в модели манифеставместе с каждой строкой, введенной в манифест.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...