Stworzyłem niestandardowe pole w moim modelu do obliczania "statystyk"

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)

Serializatory.py.

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

class Meta:
    model = models.Risk
    fields = (
        [...]
        'total',
    )

Ale drf powraca: "total": "<JsonResponse status_code=200, \"application/json\">"

Jeśli nie używam Jsonresponse () DRF zwraca ciąg: "total": "{'total_controls': 3, 'total_controls_planned': 2}"

Jak mogę wrócić "Real" JSON?

Dzięki,

0
ExploiterZ 20 październik 2020, 12:00

1 odpowiedź

Najlepsza odpowiedź

JsonResponse ma być używany jako odpowiedź widok, więc zapomnij o tym. Druga sprawa zwraca ciąg, ponieważ twoje pole jest typu Charfield, dzięki czemu "rzuca" słownik Twoją nękanie powraca do łańcucha.

Jeśli chcesz zachować strukturę, którą możesz użyć a Dictfield W miejsce szarfield.

1
Taek 20 październik 2020, 09:10