Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

__init__() got an unexpected keyword argument 'context' when calling with get in Django Rest Framework

I'm getting that error when I'm trying to get all objects.

I wrote my model so:

class Message(models.Model):
    created = models.DateTimeField(auto_now_add=True)

    type = models.CharField(_('type'), choices=MESSAGE_TYPE, default='Invitation', max_length=100)
    content = models.TextField(_('content'), blank=False)
    sender = models.ForeignKey(User, related_name='sender_message', verbose_name=_("Sender"), )
    recipient = models.ForeignKey(User, related_name='receiver_message', null=True, blank=True,
                                  verbose_name=_("Recipient"))
    url_profile_image = models.URLField(_('url_profile_image'), max_length=500, blank=True, default='')

    class Meta:
        ordering = ('created',)

My serializer:

class MessageSerializer(serializers.HyperlinkedIdentityField):

    class Meta:
        model = Message
        fields = ('url', 'id', 'type', 'content', 'Sender', 'Recipient', 'url_profile_image')

and my views:

class MessageViewSet(viewsets.ModelViewSet):
    queryset = Message.objects.all()
    serializer_class = MessageSerializer

I'm able to "create" those kind of messages in the django-admin. But I can't get them, whit the endpoint when they are created.

This is the whole error:

Internal Server Error: /users/messages/
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/exception.py", line 39, in inner
    response = get_response(request)
  File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python3.5/dist-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
    return view_func(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/rest_framework/viewsets.py", line 83, in view
    return self.dispatch(request, *args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/rest_framework/views.py", line 477, in dispatch
    response = self.handle_exception(exc)
  File "/usr/local/lib/python3.5/dist-packages/rest_framework/views.py", line 437, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/usr/local/lib/python3.5/dist-packages/rest_framework/views.py", line 474, in dispatch
    response = handler(request, *args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/rest_framework/mixins.py", line 47, in list
    serializer = self.get_serializer(queryset, many=True)
  File "/usr/local/lib/python3.5/dist-packages/rest_framework/generics.py", line 111, in get_serializer
    return serializer_class(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/rest_framework/relations.py", line 112, in __new__
    return cls.many_init(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/rest_framework/relations.py", line 132, in many_init
    list_kwargs = {'child_relation': cls(*args, **kwargs)}
  File "/usr/local/lib/python3.5/dist-packages/rest_framework/relations.py", line 406, in __init__
    super(HyperlinkedIdentityField, self).__init__(view_name, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/rest_framework/relations.py", line 282, in __init__
    super(HyperlinkedRelatedField, self).__init__(**kwargs)
  File "/usr/local/lib/python3.5/dist-packages/rest_framework/relations.py", line 106, in __init__
    super(RelatedField, self).__init__(**kwargs)
TypeError: __init__() got an unexpected keyword argument 'context'
[18/Jan/2017 10:39:21] "GET /users/messages/ HTTP/1.1" 500 17769
like image 965
Chuck Aguilar Avatar asked Nov 25 '25 14:11

Chuck Aguilar


1 Answers

Your serializer isn't a serializer, you're inheriting from a field.

class MessageSerializer(serializers.HyperlinkedIdentityField):

You should use a ModelSerializer

class MessageSerializer(serializers.ModelSerializer):
like image 124
Sayse Avatar answered Nov 28 '25 02:11

Sayse



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!