Python 如何返回QuerySet中所有选定字段和字段名的显示值?

Python 如何返回QuerySet中所有选定字段和字段名的显示值?,python,django,Python,Django,我有一个Django视图,它将模板数据作为json传递到html页面。我遇到的问题是,传递的是实际的数据库字段和字段名,而不是get_FOO_display()的可读名称和结果。为清晰起见,我的模型如下所示: class FooBar(models.Model): name = models.CharField('Name', max_length=255) AWAITING_CLASSIFICATION_STATUS = 1 IN_PROGRESS_STATUS = 2

我有一个Django视图,它将模板数据作为json传递到html页面。我遇到的问题是,传递的是实际的数据库字段和字段名,而不是get_FOO_display()的可读名称和结果。为清晰起见,我的模型如下所示:

class FooBar(models.Model):
    name = models.CharField('Name', max_length=255)
    AWAITING_CLASSIFICATION_STATUS = 1
    IN_PROGRESS_STATUS = 2
    AWAITING_REVIEW_STATUS = 3
    CLOSED_STATUS = 4
    STATUS_CHOICES = [
        (AWAITING_CLASSIFICATION_STATUS, 'Awaiting Classification'),
        (IN_PROGRESS_STATUS, 'In Progress'),
        (AWAITING_REVIEW_STATUS, 'Awaiting Review'),
        (CLOSED_STATUS, 'Closed')
    ]
    status = models.IntegerField('Status', choices=STATUS_CHOICES, default=AWAITING_CLASSIFICATION_STATUS)
[
  {'name': "name1", "status": 1},
  {'name': "name2", "status": 2},
]
我目前的看法是:

def IndexView(request):
    foo_list = FooBar.objects.all().values()
    json_list = json.dumps(list(foo_list))
    context = {'foo_list': json_list}
    return render(request, 'foo-app/index.html', context)
我的数据是什么样子的:

class FooBar(models.Model):
    name = models.CharField('Name', max_length=255)
    AWAITING_CLASSIFICATION_STATUS = 1
    IN_PROGRESS_STATUS = 2
    AWAITING_REVIEW_STATUS = 3
    CLOSED_STATUS = 4
    STATUS_CHOICES = [
        (AWAITING_CLASSIFICATION_STATUS, 'Awaiting Classification'),
        (IN_PROGRESS_STATUS, 'In Progress'),
        (AWAITING_REVIEW_STATUS, 'Awaiting Review'),
        (CLOSED_STATUS, 'Closed')
    ]
    status = models.IntegerField('Status', choices=STATUS_CHOICES, default=AWAITING_CLASSIFICATION_STATUS)
[
  {'name': "name1", "status": 1},
  {'name': "name2", "status": 2},
]
我的数据应该是什么样的:

[
  {'Name': "name1", "Status": "Awaiting Classification"},
  {'Name': "name2", "Status": "In Progress"},
]
我探讨了一些想法:

  • 迭代列表并根据模型查找每个列表(听起来像是服务器端的许多额外处理)
  • 发送整个QuerySet并在客户端处理它(我认为这将包括比我想向客户端透露的更多的数据)
  • 以人类可读的形式(nope)将数据存储在数据库中

  • 最具python/Djangonic风格的方法是什么?

    选项2是最常用的方法。您将把数据传递给Django模板引擎,而不是直接传递给客户机。您可以通过适当地编码Django模板来确定客户机/浏览器实际看到的数据