1

ユーザーに関連するフィールドを外部キーとして持つ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 と名前の両方を受け取るにはどうすればよいですか?

4

1 に答える 1