问题描述
我想按模型计数票数,当我在Django shell中测试此查询时,它工作正常,但是当以 json 传递时,我看不到列 total_Votes 当我收到 Json响应时。
class Model(models.Model):
title = models.CharField(max_length=255,null=False,blank=False)
description = models.TextField(null=False,blank=False)
class ModelVote(models.Model):
model = models.ForeignKey(Model,on_delete=models.CASCADE)
Vote = models.BooleanField()
created_at = models.DateTimeField(auto_Now_add=True)
from django.core.serializers import serialize
class ModelList(View):
def get(self,*args,**kwargs):
models = Model.objects.annotate(total_Votes=Count('modelVote'))
return HttpResponse(serialize("json",models),content_type='application/json')
解决方法
这是序列化框架的已知限制
http://code.djangoproject.com/ticket/5711
,以下查询解决了我的total_votes不作为Json Response通过的问题。只需添加.values()
即可。
Model.objects.annotate(total_votes=Count('modelvote')).values()
return JsonResponse({'models': list(models)},status=200)