Мой проект django генерирует представление в форме файла PDF, который использует файл HTML, чтобы очертить формат.У меня есть отдельное представление, которое просто отображает раскрывающийся список всех «идентификаторов ссылок» в моей модели «Заказы».Моя цель состоит в том, чтобы выбрать «Идентификатор ссылки» из выпадающего списка, нажать «Отправить» и заставить PDF-файл сгенерировать определенные значения со значениями из данных, соответствующих этому ссылочному идентификатору в модели «Заказы».
Например, я бы хотел
То, что у меня есть, перечислено ниже - любая помощь в решении этой проблемы будет принята с благодарностью!
Ниже приведен код для генерации представленияраскрывающийся список:
VIEWS.PY
def reference_view(request):
query_results = Orders.objects.all()
reference_list = DropDownMenuReferences()
context = {
'query_results': query_results,
'reference_list': reference_list
}
return render(request, 'proforma_select.html', context)
FORMS.PY
class DropDownMenuReferences(forms.Form):
Reference_IDs = forms.ModelChoiceField(queryset=Orders.objects.values_list('reference', flat=True).distinct(),
empty_label=None)
Proforma_select.html
{% extends 'base.html' %}
{% block body %}
<div class="container">
<br>
<form method=POST action="">
{{ reference_list }}
<button type="submit" class="btn btn-primary" name="button">Add Order</button>
</form>
</div>
{% endblock %}
Ниже показан код дляPDF, который генерируется:
VIEWS.PY
def generate_view(request, *args, **kwargs):
template = get_template('invoice.html')
context = {
"invoice_id": 123,
"ultimate_consignee": "john cooper",
}
html = template.render(context)
pdf = render_to_pdf('invoice.html', context)
return HttpResponse(pdf, content_type='application/pdf')
INVOICE.HTML (единственный способ найти это в Интернете - HTML 4)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Proforma Invoice</title>
<style type="text/css">
body {
font-weight: 200;
font-size: 14px;
}
.header {
font-size: 20px;
font-weight: 100;
text-align: center;
color: #007cae;
}
.title {
font-size: 22px;
font-weight: 100;
/* text-align: right;*/
padding: 10px 20px 0px 20px;
}
.title span {
color: #007cae;
}
.details {
padding: 10px 20px 0px 20px;
text-align: left !important;
/*margin-left: 40%;*/
}
.hrItem {
border: none;
height: 1px;
/* Set the hr color */
color: #333; /* old IE */
background-color: #fff; /* Modern Browsers */
}
.column {
float: left;
width: 50%;
}
</style>
</head>
<body>
<div class='header'>
<p class='title'>Proforma Invoice # {{ invoice_id }}</p>
<p class='title'>Customer: {{ ultimate_consignee }}</p>
</div>
</body>
</html>
Ниже приведена модель MODELS.PY для заказов, из которой созданы идентификаторы ссылок в раскрывающемся меню, и где я хотел бы перетащить другие поля в PDF:
MODELS.PY
class Orders(models.Model):
reference = models.CharField(max_length=50, blank=False)
ultimate_consignee = models.CharField(max_length=500)
ship_to = models.CharField(max_length=500)
vessel = models.CharField(max_length=100)
booking_no = models.CharField(max_length=50, blank=True)
POL = models.CharField(max_length=50)
DOL = models.DateField()
COO = models.CharField(max_length=50)
POE = models.CharField(max_length=50)
ETA = models.DateField()
pickup_no = models.CharField(max_length=50)
terms = models.CharField(max_length=1000)
sales_contact = models.CharField(max_length=100)
trucking_co = models.CharField(max_length=100)
loading_loc = models.CharField(max_length=100)
inspector = models.CharField(max_length=50)
total_cases = models.IntegerField()
total_fob = models.DecimalField(max_digits=10, decimal_places=2)
freight_forwarder = models.CharField(max_length=100)
commodity = models.CharField(max_length=200)
is_airshipment = models.BooleanField(default=False)
credit = models.DecimalField(max_digits=10, decimal_places=2)
def _str_(self):
return self.reference
AsВы можете видеть - я в настоящее время жестко кодирую значения в представлении, которые затем появляются в PDF - но я бы хотел, чтобы они извлекались из модели заказов.
то есть что-то вроде WHERE Reference ID = 100, Ultimate Consignee= Джон Смит