hello Members, 
I am working on some POC for django rest framework. Its very simple setup, 
nothing complicated. While I was doing my testing I am facing below error:
===================================
TypeError at /api/status/
Object of type 'ListSerializer' is not JSON serializable
| Request Method: | GET |
| Request URL: | http://127.0.0.1:8000/api/status/ |
| Django Version: | 1.11.8 |
| Exception Type: | TypeError |
| Exception Value: | Object of type 'ListSerializer' is not JSON serializable |
| Exception Location: | /usr/lib/python3.6/json/encoder.py in default, line 180 
|
| Python Executable: | /root/PycharmProjects/vrest/bin/python |
| Python Version: | 3.6.5 |
| Python Path: | ['/root/PycharmProjects/src',
 '/usr/local/buildtools/current/sitecustomize',
 '/usr/lib/python36.zip',
 '/usr/lib/python3.6',
 '/usr/lib/python3.6/lib-dynload',
 '/root/PycharmProjects/vrest/lib/python3.6/site-packages'] |
| Server time: | Mon, 8 Jul 2019 16:03:26 +0000 |

===================================Below are the details 
:-----------------------------serializers.pyfrom rest_framework import 
serializers
from STATUS.models import Status


class StatusSerializer(serializers.ModelSerializer):
    class Meta:
        model = Status
        fields = [
            'user',
            'content',
            'image'
        ]

    def validate_content(self, value):
        if len(value) > 500:
            raise serializers.ValidationError("way too long string")

    def validate(self, data):
        content = data.get('content', None)
        if content =='':
            content = None
        image = data.get('image', None)
        if content is None and image is None:
            raise serializers.ValidationError('Required fields')
        return data
models.py-------------from django.db import models
from django.conf import settings


def upload_status_image(instance, filename):
    return "updates/{user}/{filename}" .format(user=instance.user, 
filename=filename)


class StatusQuerySet(models.QuerySet):
    pass


class StatusManager(models.Manager):
    def get_queryset(self):
        return StatusQuerySet(self.model, using=self._db)


class Status(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    content = models.TextField(null=True, blank=True)
    image = models.ImageField(upload_to=upload_status_image)
    updated = models.DateTimeField
    timestamp = models.DateTimeField(auto_now_add=True)

    objects = StatusManager()

    def __str__(self):
        return str(self.content)[:50]

    class Meta:
        verbose_name = 'status post'
        verbose_name_plural = 'status posts'views.py
from django.views.generic import View
from rest_framework.views import APIView
from rest_framework.response import Response
from .serializers import StatusSerializer
from STATUS.models import Status


class StatusListSearchAPIView(APIView):
    permission_classes = []
    authentication_classes = []

    def get(self, request, format=None):
        qs = Status.objects.all()
        serializer = StatusSerializer(qs, many=True)
        return Response(serializer)forms.py
from django import forms
from .models import Status

class StatusForm(forms.ModelForm):
    class Meta:
        model = Status
        fields = [
            'user',
            'content',
            'image'
        ]

    def clean_content(self, *args, **kwargs):
        content = self.cleaned_data.get('content')
        if len(content) > 240:
            raise forms.ValidationError('Content is too long')
        return content

    def clean(self, *args, **kwargs):
            data = self.cleaned_data
            content = data.get('content', None)
            if content == '':
                content = None

            image = data.get('image', None)
            if content is None and image is None:
                raise forms.ValidationError('Content or image is required..')
            return super().clean(*args, **kwargs)app.urls.py
from django.conf.urls import url, include
from django.contrib import admin
from .views import StatusListSearchAPIView

urlpatterns = [
    url(r'^$', StatusListSearchAPIView.as_view()),
    #url(r'^create/$', StatusCreateAPIView.as_view()),
    #url(r'^(?P<id>.*)/$', StatusDetailAPIiew.as_view()),
    #url(r'^(?P<id>.*)/update/$', StatusUpdateAPIView.as_view()),
    #url(r'^(?P<id>.*)/update/$', StatusDeleteAPIView.as_view()),

]project.urls.py
from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'api/status/', include('STATUS.API.urls')),
]Project Structure : attached with the email, if not found do let me know I 
will re-attach


Project name:      googleAPP name:           STATUSdjango version :  1.11python 
version :  3.6 djangorestframework : 3.9.4




Regards,
Amitesh Sahay

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/1812294846.4496775.1562604488272%40mail.yahoo.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to