Шаблон не отображается в Django - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь получить счет-фактуру, которая берет данные из базы данных django и отображает эти данные в шаблоне.Данные хранятся и могут быть показаны в терминале, что данные хорошо хранятся в этой модели.Я делал это несколько раз, но не могу понять, почему данные не отображаются в моем шаблоне.

Это мой Models.py

class LR(models.Model):
    lr_quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE, related_name='quiz_lr')

    lr_no = models.IntegerField(default=0)
    lr_date = models.DateTimeField(max_length=255, default=now)
    lr_billingparty = models.CharField(max_length=255, default=0)  # supplier company name foreign key

    invoice_no = models.IntegerField(default=0)
    lr_declared = models.IntegerField(default=0)
    ewaybill_no = models.IntegerField(default=0)
    lr_quantity = models.IntegerField(default=0)  # quantity
    lr_weight = models.IntegerField(default=0)  # weight

    lr_invoice_date = models.DateTimeField(max_length=255, default=now)

    lr_item_name = models.CharField(max_length=255, default=0)  # said to contain

    lr_consignor_name = models.CharField(max_length=255, default=0)  # shipper company name
    lr_consignor_address = models.CharField(max_length=255, default=0)  # shipper company name
    lr_consignor_contact_name = models.CharField(max_length=255, default=0)  # shipper company name
    lr_consignor_contact_phone = models.CharField(max_length=255, default=0)  # shipper company name

    lr_consignee_name = models.CharField(max_length=255, default=0)  # shipper company name
    lr_consignee_address = models.CharField(max_length=255, default=0)  # shipper company name
    lr_consignee_contact_name = models.CharField(max_length=255, default=0)  # shipper company name
    lr_consignee_contact_phone = models.CharField(max_length=255, default=0)  # shipper company name

    vehicle_no = models.CharField(max_length=255, default=0)
    lr_vehicle_type = models.IntegerField(default=0)
    driver_name = models.CharField(max_length=255, default=0)
    driver_no = models.IntegerField(default=0)

def str (self):
    return self.name

Это мой views.py:

def PrintLR (request, pk):
    LR = get_object_or_404(LR, lr_quiz_id=pk)
    context_object_name = 'LR'
    template_name = 'classroom/suppliers/showLR.html'
    return render(request, 'classroom/suppliers/showLR.html', {LR:'LR'})

Это мой шаблон HTML:

<tr>
    <th>CNOTE NO</th>
    <th>BOOKING DATE</th>
    <th>BILLING PARTY</th>



</tr>
<tr>
    <td>{{ LR.lr_consignor_contact_phone }}</td>
    <td>{{ LR.lr_declared }}</td>
    <td>{{ LR.lr_consignee_name }}</td>
</tr>

В шаблоне нет данных, скорее поля пусты.

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Это:

return render(request, 'classroom/suppliers/showLR.html', {LR:'LR'})

неверно - вы используете экземпляр модели в качестве ключа и буквальную строку 'LR' в качестве значения, поэтому в контексте шаблона нет ничего с именем "LR".

return render(request, 'classroom/suppliers/showLR.html', {'LR':LR})

обратите внимание, что на этот раз мы используем строку в качестве ключа и экземпляр в качестве значения.

В качестве примечания, вы не должны называть свой экземпляртак же, как и класс - в лучшем случае он сбивает с толку и может привести к неожиданному поведению, поскольку он скрывает класс в остальной части текущей области видимости.О, да: часть context_object_name = 'LR' абсолютно бесполезна.

0 голосов
/ 13 июня 2019

Изменение метода PrintLR

def PrintLR (request, pk):
    qwe = get_object_or_404(LR, lr_quiz_id=pk)
    template_name = 'classroom/suppliers/showLR.html'
    return render(request, 'classroom/suppliers/showLR.html', {qwe:'qwe'})

Сначала убедитесь, что он возвращает объект.

qwe = get_object_or_404(LR, lr_quiz_id=pk)

Затем в шаблоне

<td>{{ qwe.lr_consignor_contact_phone }}</td>
<td>{{ qwe.lr_declared }}</td>
<td>{{ qwe.lr_consignee_name }}</td>
...