Django序列化值查询

2024-09-29 21:51:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Django新手,在尝试以JSON形式返回ValueQuerySet时遇到了一些问题。在

假设我有一个模型:

class Poll(models.Model):
    date = models.DateTimeField()

我想知道某个日期的投票数,所以我使用:

^{pr2}$

这将提供一个ValueQuerySet。我想将其作为JSON响应返回。在

以下是我的观点:

def get_total(request):
    total= models.Poll.objects.extra({'date': "DATE(date)"}).values('date').annotate(total=Count('id'))
    for i in total: #Convert datetime.date object to string
        i['date'] = str(i['date'])
    return HttpResponse(json.dumps(total), content_type='application/json')

我得到这个错误:

[{'date': '2013-12-02', 'total': 1}, {'date': '2013-12-03', 'total': 2}] is not JSON serializable

任何关于如何设置的建议都将不胜感激。我还使用tastype来设置一个API。如果这可以用Tastype来实现,那就太好了。在


Tags: django模型jsondatemodelmodels形式class
1条回答
网友
1楼 · 发布于 2024-09-29 21:51:16

您需要将querysets转换为list来序列化它们。 如果使用djangjsonencoder,则不需要自己转换日期。在

from django.core.serializers.json import DjangoJSONEncoder
def get_total(request):
    total= models.Poll.objects.extra({'date': "DATE(date)"}).values('date').annotate(total=Count('id'))
    return HttpResponse(json.dumps(list(total), cls=DjangoJSONEncoder),content_type='application/json')

相关问题 更多 >

    热门问题