Re: reg: Object of type 'ListSerializer' is not JSON serializable

2019-07-08 Thread 'Amitesh Sahay' via Django users
Wow..you nailed it brother, thank you. It solved the issue.


Regards,
Amitesh Sahay 

On Monday, 8 July, 2019, 10:32:13 pm IST, Jani Tiainen  
wrote:  
 
 Hi.
In your view instead of using Response(serializer) you need to use 
Response(serializer.data)
HTH.

ma 8. heinäk. 2019 klo 19.48 'Amitesh Sahay' via Django users 
 kirjoitti:

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 + |

===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.*)/$', StatusDetailAPIiew.as_view()),
#url(r'^(?P.*)/update/$', StatusUpdateAPIView.as_view()),
#url(r'^(?P.*)/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 

Re: reg: Object of type 'ListSerializer' is not JSON serializable

2019-07-08 Thread Jani Tiainen
Hi.

In your view instead of using Response(serializer) you need to use
Response(serializer.data)

HTH.


ma 8. heinäk. 2019 klo 19.48 'Amitesh Sahay' via Django users <
django-users@googlegroups.com> kirjoitti:

> 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 +
> ===
> Below are the details :
> -
> serializers.py
>
> from 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.*)/$', StatusDetailAPIiew.as_view()),
> #url(r'^(?P.*)/update/$', StatusUpdateAPIView.as_view()),
> #url(r'^(?P.*)/update/$', StatusDeleteAPIView.as_view()),
>
> ]
>
> project.urls.py
>
> from django.conf.urls import url, include
> from django.contrib import admin
>
> urlpatterns = [
>