注释结果未包含在Json响应中

问题描述

我想按模型计数票数,当我在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)