Django / Serializer - How to pass label attached to choice field in API?
I am trying to get the label attached to the relevant interger for the choice field. Although the API returns the interger, I cannot seem to be able to return the actual label value.
This is the current return:
[
{
"id": 16,
"frequency": 0,
},
{
"id": 15,
"frequency": 2,
}
]
What am I missing?
models
FREQUENCIES=(
(0,'Monthly'),
(1,'Weekly'),
(2,'Daily'),
(3, 'Bi-Weekly'),
)
class Model(models.Model):
frequency = models.IntegerField(choices=FREQUENCIES, default=0,null=True, blank=True)
serializer
class ModelSerializer(serializers.ModelSerializer):
frequency_label = serializers.ChoiceField(
choices=FREQUENCIES,
source='frequency',
read_only=True
)
class Meta:
model = Model
fields = [
'frequency',
'frequency_label',
]
viewset
class ModelViewSet(viewsets.ViewSet):
permission_classes = [IsAuthenticated]
@swagger_auto_schema(
method='get',
responses={200: ModelSerializer(many=True)}
)
@action(detail=False, methods=['get'], url_path='list-rules')
def a(self, request):
q = Model.objects.filter(field=some_variable)
return Response(
ModelSerializer(q, many=True).data,
status=status.HTTP_200_OK
)