user2492364
user2492364

Reputation: 6693

djangorestframework :type object has no attribute 'id'

when I go to http://127.0.0.1:8000/movies/
it get error : djangorestframework :type object has no attribute 'id'
Why can't I get the id value? Please help me,thank you!

Here is my code

serialize.py

class MovieSerializer(serializers.ModelSerializer): 
    link = serializers.HyperlinkedRelatedField(source='id',  view_name='movie_detail')
    class Meta:
        model = Movie
        fields = ( 'link', 'title')


class MovieDetail(object):
    queryset = Movie.objects.all()
    serializer_class = MovieSerializer

urls.py

urlpatterns = patterns('',
    url(r'^movies/$', MovieList.as_view(), name='movie_list'),
    url(r'^movies/(?P<pk>[0-9]+)$', MovieDetail.as_view(), name='movie_detail'),

how can I edit it to show the result like this:

"results": [
        { 
            "link": "http://127.0.0.1:8000/movies/1", 
            "title": "test", 
        },   
        { 
            "link": "http://127.0.0.1:8000/movies/2", 
            "title": "test", 
        },   
        ]

Upvotes: 0

Views: 403

Answers (1)

Kevin Brown-Silva
Kevin Brown-Silva

Reputation: 41671

A HyperlinkedRelatedField must have a source that points at a related object on the model. You are looking for a HyperlinkedIdentityField, which will give a link for the current object, similar to what a HyperlinkedModelSerializer will do automatically for you.

class MovieSerializer(serializers.ModelSerializer): 
    link = serializers.HyperlinkedIdentityField(view_name='movie_detail')

    class Meta:
        model = Movie
        fields = ( 'link', 'title', )

Upvotes: 1

Related Questions