Friday, 15 May 2015

Django rest framework - PrimaryKeyRelatedField -



Django rest framework - PrimaryKeyRelatedField -

i next django rest framework tutorial, , @ point here: http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions#adding-endpoints-for-our-user-models

my code userserializer looks like:

class userserializer(serializers.modelserializer): snippets = serializers.primarykeyrelatedfield(many=true, read_only=true) class meta: model = user fields = ('id', 'username', 'snippets')

i trying understand primarykeyrelatedfield exactly. doing changing code follows , refreshing url http://127.0.0.1:8000/users/ see different outputs

variation 1

snippets = serializers.relatedfield(many=true, read_only=true) { "count": 1, "next": null, "previous": null, "results": [ { "id": 1, "username": "som", "snippets": [ "snippet title = hello", "snippet title = new2" ] } ] }

this printing out __unicode__() value of snippets. expected this

variation 2 - using primarykeyrelatedfield

snippets = serializers.primarykeyrelatedfield(many=true, read_only=true) { "count": 1, "next": null, "previous": null, "results": [ { "id": 1, "username": "som", "snippets": [ 1, 2 ] } ] }

this prints out primary key id of 2 snippets - i don't understand this

variation 3 - commenting out produces

#snippets = serializers.primarykeyrelatedfield(many=true, read_only=true) { "count": 1, "next": null, "previous": null, "results": [ { "id": 1, "username": "som", "snippets": [ 1, 2 ] } ] }

from serializer docs

the default modelserializer uses primary keys relationships

if don't specify primarykeyrelatedfield used under hood, variation 2 expected output.

hopefully helps.

django django-rest-framework

No comments:

Post a Comment