ユーザーに関連するフィールドを外部キーとして持つDjangoモデルがあります。
class Notification(models.Model):
sender = models.ForeignKey(User, null=True)
is_read = models.BooleanField(default=False)
シリアライザーにこのモデルのユーザーの ID と名前の両方を表示させたいので、次のようにします。
{
"count": 45,
"next": null,
"previous": null,
"results": [
{
"id": 2,
"sender": {
"id": 2,
"name": "my_name",
}
"is_read": false,
}
]
}
しかし、新しい通知を追加するときは、次のようにユーザーの ID のみを送信したいと考えています。
$ 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')
しかし、この方法では、新しい通知を投稿するときに、ユーザーの ID と名前の両方を送信する必要があります。
$ curl -X POST http://127.0.0.1:8000/notifications/ -H "Content-Type: application/json" -d "{\"sender\": {\"id\": \"4\", \"name\":\"my_name\"} }"
この問題を解決して、ユーザー ID のみで通知を作成し、通知のリストを読んで ID と名前の両方を受け取るにはどうすればよいですか?