I have a strange issue with my Django API I created a Model called States My serializer has printed the data well but the serializer.data printing the data like the attached screen
class States(models.Model):
en_name = models.CharField(max_length=100)
ar_name = models.CharField(max_length=100)
class Meta:
verbose_name_plural = "States"
def __str__(self):
return self.en_name
and I created a Serializer file
class StatesSerializer(serializers.Serializer):
class Meta:
model = States
fields = ['en_name', 'ar_name']
then I made my views.py
@api_view(['GET'])
@permission_classes([IsAuthenticated])
def getStates(request):
states = States.objects.all() # Fetch all states from the database
serializer = StatesSerializer(states, many=True) # Serialize the data
print(serializer) # Add this line to check the serialized data
return Response(serializer.data, status=status.HTTP_200_OK)
my printed serializer
StatesSerializer(<QuerySet [<States: Alexandria>, <States: Aswan>, <States: Asyut>, <States: Beheira>, <States: Beni Suef>, <States: Cairo>, <States: Dakahlia>, <States: Damietta>, <States: Faiyum>, <States: Gharbia>, <States: Giza>, <States: Ismailia>, <States: Kafr El Sheikh>, <States: Luxor>, <States: Matruh>, <States: Minya>, <States: Monufia>, <States: New Valley>, <States: North Sinai>, <States: Port Said>, '...(remaining elements truncated)...']>, many=True):
the attached screen shows how the data is returned
You used a , so that does not look to Serializer
Meta
, and therefore you defined a serializer with no fields. Use a ModelSerializer
instead:
# ModelSerializer 🖟
class StatesSerializer(serializers.ModelSerializer):
class Meta:
model = States
fields = ['en_name', 'ar_name']