Я следую руководству по инфраструктуре Django REST и сейчас нахожусь здесь: http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions#adding-endpoints-for-our-user-models< /а>
Мой код для UserSerializer выглядит так:
class UserSerializer(serializers.ModelSerializer):
snippets = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = User
fields = ('id', 'username', 'snippets')
Я пытаюсь понять, что такое PrimaryKeyRelatedField. Для этого я изменяю код следующим образом и обновляю URL-адрес http://127.0.0.1:8000/users/
, чтобы увидеть разные результаты.
Вариант 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"
]
}
]
}
Это распечатка значения __unicode__()
фрагментов. я ожидал этого
Вариант 2 — с использованием PrimaryKeyRelatedField
snippets = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"username": "som",
"snippets": [
1,
2
]
}
]
}
Это распечатывает идентификатор первичного ключа двух фрагментов - Я этого не понимаю
Вариант 3 — закомментирование также приводит
#snippets = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"username": "som",
"snippets": [
1,
2
]
}
]
}