У меня есть представление для ввода "заказа", который после отправки предоставляет представление для создания "манифеста", который может иметь несколько записей.Для каждого заказа пользователь вводит «ссылочный идентификатор», а в соответствующем манифесте ссылочный идентификатор должен совпадать с заказом (ссылочный идентификатор в модели манифестов является внешним ключом для модели заказов).
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')
Идентификационный номер, введенный пользователем при создании заказа, должен быть сохранен в модели манифеставместе с каждой строкой, введенной в манифест.