Search code examples
djangodjango-serializer

Django rest Framework - Expected a list of items but got type "QuerySet"


I try to serialize query set. But Im getting {'non_field_errors': [ErrorDetail(string='Expected a list of items but got type "QuerySet".', code='not_a_list')]} error. How to solve this error.

    def post(self, request):
        data = request.data
        user_name = data.get('username')
        signup_filtered_data = Signup.objects.filter(username= user_name).values()
        print(signup_filtered_data)
        serializer = SignupSerializer(data= signup_filtered_data, many=True)
        serializer.is_valid()
        print(serializer.errors)
        signup_jason_data = json.dumps(serializer.data)
        return HttpResponse(signup_jason_data)

models.py

class Signup(models.Model):
    first_name = models.CharField(max_length=50, blank=True, null=True)
    last_name = models.CharField(max_length=50, blank=True, null=True)
    email = models.EmailField(max_length=50, unique= True)
    phone_number = models.CharField(max_length=12, unique= True)
    username = models.CharField(max_length=50, unique= True)
    password = models.CharField(max_length=50, blank=True, null=True)

serializers.py

class SignupSerializer(serializers.ModelSerializer):

    class Meta:
        model = Signup
        fields = '__all__'

Solution

  • It is that you have used many = True in the view when you pass the data to the serializer, but you are in fact only sending a single message.

    def post(self, request, formate = None):
       serializer = SignupSerializer(data= signup_filtered_data)
    

    See the actual answer: Actual answer