Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django DRF-自定义字段Json_Django_Django Rest Framework - Fatal编程技术网

Django DRF-自定义字段Json

Django DRF-自定义字段Json,django,django-rest-framework,Django,Django Rest Framework,我在模型中创建了一个自定义字段,用于计算“统计信息” Models.py class Risk(models.Model): [...] def risk_completion(self): total = self.controls.count() total_completion = self.controls.filter(status="NP").count() response_data = { 'total_cont

我在模型中创建了一个自定义字段,用于计算“统计信息”

Models.py

class Risk(models.Model):
[...]   
def risk_completion(self):
    total = self.controls.count()
    total_completion = self.controls.filter(status="NP").count()

    response_data = {
        'total_controls': total,
        'total_controls_planned': total_completion
    }

    return JsonResponse(response_data)
序列化程序.py

class RiskSerializer(serializers.ModelSerializer):
[...]
total = serializers.CharField(source='risk_completion')

class Meta:
    model = models.Risk
    fields = (
        [...]
        'total',
    )
但DRF返回:
“总计”:“

如果我没有使用JsonResponse(),DRF将返回一个字符串:
“total”:“{'total\u controls':3,'total\u controls\u planned':2}”

如何返回“真实”Json


谢谢,

JsonResponse
是用来作为一个视图响应的,所以忘了它吧。 第二种情况返回字符串,因为您的字段是charfield类型,所以它将您的函数返回的字典“强制转换”为字符串

如果你想保留这个结构,你可以用一个替换你的charfield