django - 序列化时选择字段的人类可读值
问题描述
我将查询集的序列化数据发送到我的模板中,如下所示:
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 的内置功能。
{% for invoice in invoices %}
{{ invoice.get_office_display }}
{% endfor %}
推荐阅读
- php - Octobercms - 禁用缓存
- javascript - javascript 正则表达式查找仅包含一个点的单词
- excel - 如何像范围一样定义二维数组的列?
- reactjs - 如何使用 webpack-dev-server 运行反应应用程序?
- excel - 一个切片器过滤多个 Excel 表(不是数据透视表)
- dynamics-crm - 插件未在用户启用/禁用时触发
- java - 比较项目时的 Java 收集性能
- javascript - js数据表中的点击事件(分页中断)
- javascript - 映射数组元素并返回对象
- spring - 需要一个关于嵌入式 kafka 和骆驼的例子