У меня есть модель Django, в которой в качестве внешнего ключа есть поле, связанное с пользователем.
class Notification(models.Model):
sender = models.ForeignKey(User, null=True)
is_read = models.BooleanField(default=False)
Я хочу, чтобы мой сериализатор показывал как идентификатор, так и имя пользователя для этой модели, поэтому это выглядит так:
{
"count": 45,
"next": null,
"previous": null,
"results": [
{
"id": 2,
"sender": {
"id": 2,
"name": "my_name",
}
"is_read": false,
}
]
}
Но когда я добавляю новое уведомление, я хочу отправить только идентификатор пользователя, например:
$ curl -X POST http://127.0.0.1:8000/notifications/ -H "Content-Type: application/json" -d "{\"sender\":\"4\"}"
Я попытался использовать гиперссылку в своем сериализаторе:
class NotificationSenderSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('id', 'name')
class NotificationSerializer(serializers.ModelSerializer):
sender_name = serializers.NotificationSenderSerializer()
class Meta:
model = Notification
fields = ('id', 'sender', 'is_read')
Но происходит то, что таким образом мне нужно отправить как идентификатор, так и имя пользователя при публикации нового уведомления.
$ curl -X POST http://127.0.0.1:8000/notifications/ -H "Content-Type: application/json" -d "{\"sender\": {\"id\": \"4\", \"name\":\"my_name\"} }"
Как я могу решить эту проблему, чтобы я мог создать уведомление только с идентификатором пользователя, но получить как идентификатор, так и имя, читая список уведомлений?