首页 > 解决方案 > 序列化时选择字段的人类可读值

问题描述

我将查询集的序列化数据发送到我的模板中,如下所示:

from django.core import serializers

def View(request):
    invoices = serializers.serialize('json', Invoice.objects.all())
    context = {'invoices':invoices}
    return render(request, r'template_folder\template.html', context)

但是,我的选择字段被解析为实际值,而不是人类可读的值

class Invoice(models.Model):
    (...)
    transaction_number = models.CharField(max_length = 32)
    invoice_amount = models.FloatField()
    office = models.IntegerField(choices = [(1, 'ABC'), (2, 'DEF')])
    <script>
        const invoices = JSON.parse("{{invoices|escapejs}}")
    </script>

我该怎么做才能将人类可读的值发送到模板('ABC','DEF'..)而不是('1','2'..)?

标签: django

解决方案


为此,您可以使用 Django 的内置功能。

{% for invoice in invoices %}    
 {{ invoice.get_office_display }}
{% endfor %}

推荐阅读